- 主题:通过pexpect用scp命令发送大文件,总是提示timeout
你用 pexpect 输入密码吧,输入密码的时候匹配了 root@ip: 这个吧?
然后你 scp 命令,是不是也是这个结尾。。。
然后 pexpect 觉得他应该出来帮你输入个密码,然后等着下一步,结果没等到超时了
大致就是这个原因,怎么修具体得看你代码怎么写的
【 在 nokia0125 (二过头) 的大作中提到: 】
: 用pexpect命令模拟ssh登陆远程主机,登陆成功后用scp test.txt root@ip 发送文件,总是提示:hit timeout 'Hit timeout Try to expect \\[root\\@.*\ \]\\# failed pexpect hit TIMEOUT.',大家知道啥原因吗
--
FROM 114.242.94.*
直接冒号的话会复制到 ~ ,一般也没啥问题
【 在 dinglinglm (闵敏) 的大作中提到: 】
: scp 你不需要告诉人家,你要把文件放在远端的哪个目录?
: 比如 scp test.txt root@ip:/root/
: ——
: ...................
--
FROM 114.242.94.*
不给路径不给冒号,相当于cp
就是把前面的文件复制到后面那个 a@b 了而已
【 在 dinglinglm (闵敏) 的大作中提到: 】
: 我试了,不给路径(也不给冒号),跟楼主主楼写的一样,失败,并不报错。当然远端的home下也没有,并且没提示我输密码。
: 当然,这是具体到我的环境下,得到的结果。
: ——
: ...................
--
FROM 114.242.94.*
你也不贴代码,你自己也没有调试能力。。。
这么多天过去了你除了研究出来scp和iperf不一样这一个现象之外有啥进展?
【 在 nokia0125 (二过头) 的大作中提到: 】
: 这个问题的关键还是在用scp传输大的文件,同样的方式,iperf命令就能正常发送出去,用的一套pexpect代码
--
FROM 114.242.94.*
我从第一个回答就说了。。。。
你那个 root@.* 不止能匹配到输入密码,也能匹配到 scp 这句话
你没看见?这都快一个星期了,还没反应过来是咋回事?
【 在 nokia0125 (二过头) 的大作中提到: 】
: self.child = pexpect.spawn(ssh_start_cmd, env=os.environ,use_poll=True)
: ssh_start_cmd: /usr/bin/ssh -p 22 root@10.20.14.117
: index = self.child.expect(ptnlist,timeout=timeout)
: 其中ptnlist:ptnlist = [pexpect.EOF, pexpect.TIMEOUT,[root@.*]]正常期待是ptnlist最后一项,但是触发了pexpect.TIMEOUT,具体代码如下:
: elif index == 1:
: tomsg = ('Try to expect %s failed '
: 'pexpect hit TIMEOUT.'
: % ptn)
: self.caselog.debug_print_level1(tomsg)
: 然后,我要发送的scp命令如下:bin/scp /dev/test.img root@ip:/dev/null
root@.*
--
FROM 114.242.94.*
好吧。我还真不是这个意思。。。。
不过解决了就解决了吧。。。
【 在 nokia0125 (二过头) 的大作中提到: 】
: 谢谢,老大, 你的说法是对的,
: 的确是因为scp命令要输入远程主机的密码,而我没有写输入密码相关的模块,
: 现在补上就对了
: ...................
--
FROM 114.242.94.*