как сделать цикл для ожидаемого, выполнить через все строки в файле - PullRequest
0 голосов
/ 17 мая 2019

я пытаюсь создать сценарий входа в систему sftp, используя ожидаемое, и я хочу иметь файл с IP-адресом для каждого удаленного хоста, к которому я хочу подключиться.Как создать функцию for, которая должна проходить через каждую строку в файле IP-адреса и заставлять ее переменную принимать строку в каждой строке.Код, который у меня сейчас есть,

set filehandle [open /home/logs r]
while {[gets $filehandle line] != -1} {
spawn sftp user@$filehandle
sleep 1
expect "*password:" [send "password/r"]
sleep1
expect "*" [send "get /home/holder/r"]
sleep 1
expect "*" [send "bye/r"]}


i get the following response
```spawn sftp user@server
user@server´s password: spawn sftp user@server
user@server´s password: user@hostname:/home/user

1 Ответ

1 голос
/ 17 мая 2019

Вы путаете оболочку и ожидаете: for ...; do ...; done - это синтаксис оболочки

Вы хотите:

set filehandle [open /home/logs r]
while {[gets $filehandle line] != -1} {
    spawn sftp user@$line
    # ...
}
close $filehandle

Expect - это расширение языка Tcl.Возможно, вы захотите взглянуть на учебник Tcl: https://tcl.tk/man/tcl8.5/tutorial/tcltutorial.html

...