Мой сервер авторизации находится за брандмауэром, который использует стук портов, чтобы разрешить вход. Логин-поток
- Введите в команду стука порта. Это требует ввода моего внешнего IP.
- При появлении запроса введите мой пароль для стучания портов.
- Введите в команду ssh
- Введите пароль
Я могу получить разрешение на использование ключей ssh, но я пытаюсь написать скрипт, который позволит мне сократить время входа в систему, так как я должен пройти этот процесс для каждой оболочки, которую я хочу вызвать.
#!/bin/expect
spawn fwknop -A tcp/22 -a `curl http://ipecho.net/plain` -D foo.org -P tcp -p 9999
expect "Enter encryption password:"
send "pass1\r"
spawn ssh -Y bar@foo.org
expect "bar@foo.org's password:"
send "pass2\r"
Выполнение каждой команды отлично работает из командной строки. Но когда я пытаюсь запустить первую команду spawn
spawn fwknop -A tcp/22 -a `curl http://ipecho.net/plain` -D foo.org -P tcp -p 9999
Я получаю ошибку:
fwknop: fko_set_spa_message: Error 10 - Invalid allow IP address in the SPA message data
send: spawn id exp7 not open
Но скопируйте / вставьте ту же команду в командную строку, и она отлично работает.
script
shell-script
expect
Zach Melnick
источник
источник
-a
переключить (или передать это хитрый IP)?Ответы:
@ Скотт прав, ожидайте, что Tcl ничего не делает с обратными галочками, это просто символы. Это должно работать, хотя:
источник
У меня нет опыта работы с
expect
Интересно, Это понимает обратные тики. Пытатьсятак что вы получите
`curl Http: // ipecho.net / plain`
обрабатываться оболочкой.источник