我正在尝试连接到远程服务器,然后尝试在该机器上登录 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()
添加回答
举报
0/150
提交
取消