为了账号安全,请及时绑定邮箱和手机立即绑定

无法在 python ssh 中获得任何输出

无法在 python ssh 中获得任何输出

幕布斯6054654 2022-04-23 21:21:22
我正在尝试连接到远程服务器,然后尝试在该机器上登录 sql 服务器。但是我没有得到这个脚本的任何输出import paramikossh = paramiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy() )ssh.connect(hostname='172.18.109.244', username='bgf', password='bgf')print "Logged In to EMS"cmd = 'mysql -uroot -root'stdin, stdout, stderr = ssh.exec_command(cmd)stdin.write("show databases;")stdin.write('\n')stdin.flush()print stdout.read()
查看完整描述

1 回答

?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

正如@Charles 在评论中提到的,


read() 将内容消耗到 EOF。这里没有 EOF,因为 MySQL 仍然处于打开状态。简单的答案是不仅要刷新标准输入,还要关闭它。


你不能这样做,因为 MySQL 仍然是打开的,你的脚本会挂在那里。因此,如果您只想获取数据库,则将查询传递给 MySQL 连接并且可以正常工作:)。


    import paramiko

    ssh = paramiko.SSHClient()

    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy() )

    ssh.connect(hostname='172.18.109.244', username='somuser',password='bgf')

    print "Logged In to EMS"

    cmd = 'mysql -h somehost.example.com -uroot -proot -e \'show databases;\''


    stdin, stdout, stderr = ssh.exec_command(cmd)

    # stdin.write("show databases;")

    stdin.write('\n')

    stdin.flush()

    print stdout.read()


查看完整回答
反对 回复 2022-04-23
  • 1 回答
  • 0 关注
  • 164 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信