oracle 与 client端执行结果不一致_运维开发之paramiko远程执行命令实时返回

昨天写了个 运维开发之利用python实现WEB实时查看服务器日志 有个运维的小伙伴看完之后和我讨论一个问题

他现在是使用paramiko库远程登录到服务器执行命令但是要等命令执行完毕后才返回输出的结果,没办法实现在WEB端实时显示执行过程,有时候命令执行过程中卡着了,根本不知道是什么情况。

其实这个需求可以实现,而且比较简单,我上个简单的代码吧

测试脚本内容

# -*- coding:utf-8 -*-import sysimport paramikodef ssh_exec_command(hostname, port, username, password):    client = paramiko.SSHClient()    client.load_system_host_keys()    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())    client.connect(hostname=hostname, port=port, username=username, password=password)    # 模拟命令输出    command = 'ping www.baidu.com -c 5'    stdin, stdout, stderr = client.exec_command(command)    stderr.channel.set_combine_stderr(stdout)    # 和其他的写法的区别是这里c    while True:        line = stdout.readline()        if len(line) == 0:            break        print(str(line.strip()))    client.close()    return stdout.channel.recv_exit_status()if __name__ == '__main__':    exit_status = ssh_exec_command(hostname='192.168.209.128', port=22, username='root', password='redhat')    if exit_status == 0:        print('命令执行成功!')        sys.exit(exit_status)    else:        print('命令执行失败!')        sys.exit(exit_status)

测试看看效果

7c08813b8f38855a92f1c6ecd55259c4.gif

接下来可以改成把输出的信息保存到文件,结合上一篇的内容实现ssh命令实时显示了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值