paramiko是python三方的基于ssh协议的远程登录模块,要使用的话首先我们需要安装
最常用的安装方法是在命令行中输入pip install paramiko,如果失败的话可以尝试其它的方法。
https://blog.csdn.net/weixin_44251004/article/details/88562257 这篇博客中也有记载其它的方法
import paramiko
# 创建ssh链接实例
ssh = paramiko.SSHClient()
# 创建白名单,默认不询问
know_hosts = paramiko.AutoAddPolicy()
# 设置白名单
ssh.set_missing_host_key_policy(know_hosts)
# 链接服务器
ssh.connect(
hostname="10.10.65.91",
port=22,
username="root",
password="1234"
)
# 执行命令
# ssh.exec_command()返回三个类文件对象
# stdin是写权限的文件对象,标准输入
# stdin是读权限的文件对象,标准输出
# stderr是读权限的文件对象,标准错误,特殊的输出
stdin, stdout, stderr = ssh.exec_command("ls /")
# 查看执行结果
result = stdout.read().decode()
print(result)
ssh.close()
这是paramiko模块的基本使用方法
输出了命令执行后返回的值
Sftp文件上传下载
通过paramiko可以传输文件
import paramiko
trans = paramiko.Transport(
sock=(
"10.10.65.91", 22
)
)
trans.connect(
username="root",
password="1234"
)
sftp = paramiko.SFTPClient.from_transport(trans)
sftp.put("1.py","/lee/main.py")
sftp.get("/lee/main.py", "2.py")
sftp.close()
上面的sftp.put是将本地的当前目录下的1.py,传输为远程服务器上的/lee/main.py,不仅传输过去了,还改了名字
然后sftp.get是将远程服务器上的/lee/main.py传输到本地的当前目录下,并命名为2.py
交互式
import paramiko
ssh = paramiko.SSHClient()
know_hosts = paramiko.AutoAddPolicy()
ssh.set_missing_host_key_policy(know_hosts)
ssh.connect(
hostname="10.10.65.91",
port=22,
username="root",
password="1234"
)
shell = ssh.invoke_shell()
shell.settimeout(1)
command = input(">>>") + "\n"
shell.send(command)
while True:
try:
recv = shell.recv(512).decode()
if recv:
print(recv)
else:
continue
except:
command = input(">>>") + "\n"
shell.send(command)
ssh.close()
在这个循环内,可以进行与远程服务器的交互