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

我正在尝试连接到远程服务器,然后尝试在该机器上登录 sql 服务器。但是我没有得到这个脚本的任何输出


import paramiko


ssh = 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()


幕布斯6054654
浏览 165回答 1
1回答

一只甜甜圈

正如@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()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python