下面是我的python函数,其中我需要在ls-ltr命令之后将python变量file_search嵌入到expect脚本内。引号给我噩梦。有什么简单的方法可以处理这些引号并使它更易于理解?
def checkLatencyTime(file_search, corr_check = False, ip = None, passwd = None):
cmdStr = ""
return_code = 3
if ip and passwd:
for x in range(len(ip)):
cmd ="/usr/bin/expect -c 'spawn ssh " + ip[x] + " \"/usr/bin/expect -c \'\\\'\'spawn ls -ltr; expect \\\"continue connecting (yes/no)?\\\" { send yes\r}; expect \\\"password: \\\" { send \\\""+passwd[x]+"\r\\\"};interact\'\\\'\'\" ; expect \\\"~]#\\\" { send echo -\r}; expect \"password: \" { send \""+passwd[x]+"\r\"};expect \"~]#\" { send echo -\r};expect \"continue connecting (yes/no)?\" { send yes\r};interact'"
给出了一段代码,我正在尝试与远程服务器建立连接并使用expect在该服务器上执行冗长的管道命令(实际上不是这里给出的ls),检索输出并对其进行处理。
我什至无法跟随您的尝试。您正在使用Expect SSH到A并在远程服务器上,请使用Expect执行...“ ls”吗????为什么您认为需要在远程服务器上运行Expect?
我的Python生锈了,但是也许:
cmd = [
'/usr/bin/expect',
'-c',
'''
spawn ssh {0} ls -ltr {1}
expect {
"continue connecting" {send "yes\r"; exp_continue}
"assword:"
}
send "{2}\r"
expect eof
'''.format(ip[x], file_search", passwd[x])
]