我正在尝试连接到远程服务器,然后尝试在该机器中登录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()发布于 2019-08-05 13:50:31
正如@Charles在评论中提到的,
read()向EOF消耗内容。这里没有EOF,因为MySQL仍然是开放的。简单的答案是,不仅要冲洗stdin,而且要关闭它。
您不能这样做,因为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()https://stackoverflow.com/questions/57359742
复制相似问题