У меня возникли проблемы с отправкой команды на удаленный сервер с использованием сценария ожидания. Команда ОК, если я вставляю ее в команду send вручную в скрипте, но она не работает, если я передаю ее скрипту except через аргумент (команда $). Команда, которую я хочу запустить на удаленном сервере:ожидать командную переменную с трубами и специальные символы, не работающие
top -b -n 2 | head -15 & & ls -lrt/var/log | голова -10
Пример: ./myexpectscript пароль ф «сверху -b -n 2 | головка -15 &»
UPDATE: Я считаю, что каждая команда, которую я отправить (то есть более чем один строка) через этот скрипт на удаленном сервере выполняется в фигурные скобки ... НАПРИМЕР:
./myexpectscript пароля ф «PWD» нормально
./myexpectscript пароль ф «эхо привет» ответ :
# {echo hello}
/bin/sh: {echo: not found
Если удалить двойные кавычки работает команда:
./myexpectscript пароль внутрибрюшинен эхо привета
# echo hello
hello
Таким образом, проблема заключается в том, что я хочу, чтобы выполнить кратно конвейер команды однолинейной :
top -b -n 2 | head -15 && ls -lrt /var/log | head -10
на сервере через мой, кроме сценария я получил:
# {top -b -n 2 | head -15 && ls -lrt /var/log | head -10}
/bin/sh: {top: not found
ls: /var/log: No such file or directory
head: invalid number '10}'
это должно работать с двойными кавычками, но я получил команду в фигурных скобках. Я пробовал этот скрипт на других серверах разного типа, и у меня такое же поведение.
#!/usr/bin/expect -f
set password [lrange $argv 0 0]
set ipaddr [lrange $argv 1 1]
set command [lrange $argv 2 end]
set timeout -1
spawn ssh [email protected]$ipaddr
match_max 100000
expect "*?assword:*"
send -- "$password\r"
expect "*\\\[0-7\\\]:*"
send -- "5\r"
expect "*\\\[0-4\\\]:*"
send -- "3\r"
expect "\\\#*"
#spawn {*}$command
#eval spawn $command
#send -- "$command\r"
send -- "top -b -n 2 | head -15 && ls -lrt /var/tslog | head -10\r"
expect "\\\#*"
send -- "exit\r"
expect "*\\\[0-4\\\]:*"
send -- "0\r"
expect "*\\\[0-7\\\]:*"
send -- "0\r"
expect eof
показать, как именно вы обеспечиваете команду в качестве аргумента к ожидать сценария –