paramiko库是用来连接远程服务器并令远程服务器进行操作的一个库,安装paramiko只需要利用pip命令 pip install paramiko
安装好了之后进行导入import paramiko
import paramiko
#第一步需要创建一个ssh连接
ssh_client = paramiko.SSHClient()
#然后需要设置授权
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 上面两行代码不用动
# 然后进行正式连接,hostname就是服务器的ip,port默认22,username和password就是你的服务器用户名和密码
ssh_client.connect(hostname='47.96.176.251', port=22, username='hello', password='达咩达咩')
# 建立连接之后可以通过下面一行语句进行判断是否能够正常运行
stdin, stdout, stderr = ssh_client.exec_command('ls')
# stdout是运行命令之后返回的结果,如果运行出错的话stderr会存储错误信息,正常情况下stdout,stderr只会有一个变量有内容(要么正常运行,结果给stdout,
# 要么报错,结果给stderr)
print(stdout.read().decode('utf-8'))
# 关闭连接
ssh_client.close()
运行结果如下,在linux服务器执行的命令结果返回给本地主机
再举个例子,运行另外一个命令
import paramiko
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(hostname='47.96.176.251', port=22, username='111', password='hello')
stdin, stdout, stderr = ssh_client.exec_command('ls -lah')
stdin1, stdout1, stderr1 = ssh_client.exec_command('pwd')
print(stdout.read().decode('utf-8'))
print(stdout1.read().decode('utf-8'))
ssh_client.close()
结果如下
--------------------------------------------------------------------------------------------------------------------------------上面是paramiko执行linux命令的代码,paramiko还可以把本地文件上传到服务器上,下面看一下上传操作
import paramiko
# 定义一个上传函数
def send_file(ip,username,password):
# 指定上传之后的路径,文件放在服务器的哪个目录下
path = '/home/langhaozhe/code/homework'
# 用户名密码没啥好说的
username = username
password = password
# 这里是建立一个传输连接,Transport函数里需要传入ip和端口,采用我这个默认的方式即可
tran = paramiko.Transport((ip, 22))
# 传输连接起来
tran.connect(username=username, password=password)
# 默认不用管
sftp = paramiko.SFTPClient.from_transport(tran)
# 本地文件的位置,可以采用绝对路径或者相对路径,这里我的targetFile和我的代码在同一目录下,如果在不同目录下可以用绝对路径,
# 例如D:\临时文件\数据运维期末作业\targetFile.py
local_path = "targetFile.py"
# 远程存放地址,在path下
remote_path = path + '/targetFile.py'
# 上传
sftp.put(local_path, remote_path)
# 关闭
tran.close()
print(f'服务器{ip}推送完成')
一个执行命令一个上传操作,这两个操作足以应对大多数的问题,如果还有任何疑惑,欢迎评论区或者私信问我。