paramiko模块exec_command()函数是将服务器执行完的结果一次性返回给你;
invoke_shell()函数类似shell终端,可以将执行结果分批次返回,看到任务的执行情况,不会因为执行一个很长的脚本而不知道是否执行成功
exec_command()
import paramiko
import time
# exec_command()
# 当前例子构造的命令
command = ''
def send():
# 创建对象
ssh = paramiko.SSHClient()
# 执行命令
stdin, stdout, stderr = ssh.exec_command(command)
# 获取命令的结果
result = (str(stdout.read(), encoding='utf-8'))
# 返回结果
return result
invoke_shell()
def send():
hostname = "xx.xx.xx.xx"
port = 22
username = "xx"
password = "xx"
# 创建对象
client = paramiko.SSHClient()
# 允许将信任的主机自动加入到host_allow 列表,此方法必须有,且必须放在connect方法的前面,否则报错
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
cli = client.connect(hostname, port, username, password, compress=True)
# 激活terminal
channel = client.invoke_shell()
# 向服务器发送命令command
command = ''
channel.send(command + '\n')
while True:
time.sleep(1.3)
# 接收到的服务器返回值
stdout = channel.recv(1024)
# 查看命令执行的情况
print(stdout.decode())
# 省略对后面数据的操作