最近在学习《python 自动化运维》 一书,书中提到使用paramiko的send和recv来进行远程ssh的命令输入和结果获取,我也尝试使用了下。
开始在连接connect 目标host和port后准备按照书中所说连接堡垒机
channel.send(‘ssh ’ +…………………………….)
准备输入密码
while not buff.endswith(“password: “)
try:
resp = channel.recv(1024).decode(“utf8”)
except Exception as e:
print(…..)
butff+=resp
恰恰就在resp=channel.recv这里出现了问题,一直timeout,
然后我就开始python3 -m pdb ….这个程序,发现竟然调试可以通过,然后将命令一条条贴入交互界面也可以
我想是不是我的机器反应慢,需要等所以运行程序会不行呢,我做了小实验
将程序命令一起迅速全部贴入交互,发现,三次有两次会在resp接受recv这里出错,
于是我在开始在while循环中各种加time.sleep以期望达到顺利接受的目的,后来发现还是徒劳
经过不断尝试,发现在connect堡垒机ssh主机前我们登录Linux也会也有返回,是否是这个影响了具体的接受呢
在connect 后加入了一个resp=channel.recv(1000)
然后在while的第一个try:先sleep 1秒钟,后来发现终于成功了,我发现网上很少有碰到我这个问题的,,,不知道我是个例还是怎么回事