请问我用pexpect操作远程机的脚本在一台机子上可以执行但在另外一台机子上不行呢?

csuymj 2010-04-27 11:05:28
我写的python脚本,用pexpect,准备远程替换配置文件,但奇怪的是脚本语言在一台机子上可成功替换,但在另外一台机子上去不能替换,但是pexpect的执行都是正确的,在任何一台机子上都没有报错,请问各位这是什么原因呢?
我同了一些同事,他们说可以是路径的问题,但是他们也找出原因?请各位帮帮忙,谢谢
...全文
239 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
csuymj 2010-04-29
  • 打赏
  • 举报
回复

#!/usr/bin/env python
import pexpect
from pexpect import *
ip = '172.25.38.22'
user = 'jeremyyuan'
pwd = 'qq17:00'
path = '/data/jeremyyuan/ServerFile'
returnstr='scuuessfully'
loggs=['begin']
foo = pexpect.spawn('sftp -oPort=36000 %s@%s' %(user,ip))
index = foo.expect(['password:','yes/no',pexpect.EOF,pexpect.TIMEOUT])
loggs.append('this timea %s' % index)
if index == 0:
foo.sendline(pwd)
elif index == 1:
foo.sendline('yes')
index = foo.expect(['password:','yes/no',pexpect.EOF,pexpect.TIMEOUT])
if index !=0:
print "sftp login failed"
foo.close(force=True)
foo.sendline(pwd)
index = foo.expect(['sftp>','Permission denied, please try again',pexpect.EOF,pexpect.TIMEOUT])
if index == 0:
loggs.append("sftp>")
foo.sendline('cd %s' % path)
foo.sendline('mkdir tttttttttt')
print 'upload file....'
index = foo.expect(['sftp>',pexpect.EOF,pexpect.TIMEOUT])
if index == 0:
foo.sendline('quit')
loggs.append("success")
#except pexpect.EOF:
foo.close()
else:
print "wrong"
print loggs

本来我是准备复制文件到远程机,但是复制不成功,所以我就简单地写了下新建一个目录,但还是不成功,loggs里打印出来的日志都是按我期望中执行的,但是新建目录不成功。在这台机子上我不以脚本而直接以命令的形式重新执行这些命令是可以成功的;最重要的是这个脚本我在我的虚拟机上去执行又可以成功新建一个目录。请问这是什么原因?谢谢
thy38 2010-04-28
  • 打赏
  • 举报
回复
上点代码吧,不然大家只能靠猜

37,743

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧