Переменная сценария TCL Expect python - PullRequest
0 голосов
/ 30 апреля 2020

Ниже приведена моя python функция, в которой мне нужно встроить переменную python file_search в сценарий Ожидается сразу после ls - ltr команда. Цитаты дают мне кошмар. Есть ли простой способ справиться с этими цитатами и сделать их более понятными?

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'"

Здесь приведен фрагмент кода, я пытаюсь установить sh соединение с удаленным сервером и выполнить команду длинного конвейера ( не просто ls , как указано здесь) на этом сервере, используя ожидайте , получите вывод и обработайте его.

1 Ответ

0 голосов
/ 30 апреля 2020

Я даже не могу понять, что ты пытаешься сделать. Вы используете "ожидайте" s sh для А и на удаленном сервере, используйте "ожидайте ... сделать" ls "???? Как вы думаете, почему вы должны запустить ожидаемый на удаленном сервере?

Мой 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])
]
...