У меня есть скрипт bash + ожидающий, который должен подключаться через ssh к удаленному компу (и я не могу использовать ssh-ключи, здесь требуется идентификация пароля), прочитать файл там, найти конкретную строку с "именем хоста" (например, «hostname aaaa1111») и сохраните это имя хоста в переменной, которая будет использоваться через некоторое время. Как я могу получить значение параметра "hostname"? Я думал, что содержимое строки будет в переменной $ allow_out (buffer) (чтобы я мог ее отсканировать и проанализировать), но это не так. Мой сценарий:
#!/bin/bash
----bash part----
/usr/bin/expect << ENDOFEXPECT
spawn bash -c "ssh root@$IP"
expect "password:"
send "xxxx\r"
expect ":~#"
send "cat /etc/rc.d/rc.local |grep hostname \r"
expect ":~#"
set line $expect_out(buffer)
puts "line = $line, expect_out(buffer) = $expect_out(buffer)"
...more script...
ENDOFEXPECT
Когда я пытаюсь увидеть строковую переменную, я вижу только это: line = , expect_out(buffer) = (buffer)
Как правильно получить строку из файла в переменную?
Или можно открыть файл на удаленном компьютере с помощью ожидаемого файла, отсканировать файл и получить то, что мне нужно, в переменную?
Здесь http://en.wikipedia.org/wiki/Expect есть пример:
# Send the prebuilt command, and then wait for another shell prompt.
send "$my_command\r"
expect "%"
# Capture the results of the command into a variable. This can be displayed,
set results $expect_out(buffer)
кажется, что в этом случае это не работает?