Я пишу простой ожидаемый сценарий для доступа к удаленному серверу без ввода пароля с помощью окна командной строки.
Я могу получить доступ к удаленному серверу, и там яхочу изменить текстовый файл.Это изменение выполняется с помощью команды sed для нахождения «ключевого слова», строка, в которой находится это «ключевое слово», удаляется.
Часть кода, которая дает мне problem - комбинация ' spawn ' с ' sed ' - следующая
spawn sed -i -e '/keyword_to_delete/d' /home/my_file
Так как это происходит в спецификациифайл Я должен сделать это с помощью команды «spawn».Я включаю режим отладочной информации, и основная информация об ошибках на экране:
expect: set expect_out(buffer) "exit\r\nsed: -e expression #1, char 1: unknown command: `''\r\n"
cannot interact with self - set spawn_id to a spawned process
Я надеюсь, что я показал проблему здесь ясно и хорошо, если не сказать мне, и я попытаюсьсделайте это лучше.
Большое спасибо
CODE:
set ip [lindex $argv 0]
set port [lindex $argv 1]
set password <PSWD>
proc sendPass {} {
global ip
global port
global password
spawn "/usr/bin/ssh" -X -p $port root\@$ip "-o StrictHostKeyChecking no" "-o UserKnownHostsFile /dev/null"
while {1} {
expect {
"IN" {break}
"Are you sure you want" {send "yes\r"}
"assword" {send "$password\r"}
}
}
spawn chmod 775 /etc/hosts
spawn sed -i -e {/operator/d} /etc/hosts
spawn sed -i -e {/default/d} /etc/hosts
send "exit\r"
expect eof
}; # end proc sendPass
#execute proc
sendPass
# script itself terminates
interact
И текущая ошибка: "sed: не удалось открыть временный файл / etc // sedDEb2Fx: В доступе отказано "