@frizesb

Почему expect не выполняет скрипт?

Помогите найти ошибки где не так сделал пожалуйста
#!/bin/bash
set -x
#имя пользователя
username=$(cat /home/administrator/crontab/usr)
#файл с паролем
password=$(cat /home/administrator/crontab/pass)
# имя обрабатываемых хостов
hostnames="vld-prod1-05"
#Преобразование $hostname в $H
for H in $hostnames
do
  if (zenity --info --title="EXPECT SCPT" --TEXT="ДЛЯ ВЫПОЛНЕНИЯ НАЖМИТЕ (ОК)")
  then
  if (zenity --progress --pulsate --auto-close --auto-kill --text="Выполняется: $H")
  #Первая команда EXPECT
  expect <<EOF
  spawn scp -r /home/administrator/crontab $username@$H:/home/administrator/
  while 1 { expect {
    "(yes/no)" {send "yes\r"}
    "*assword:" {send "$password\r"}
    "$H:" {break}
    "Permission denied" {send_user "Подключение не выполнено\r" ; exit 1}
    "timeout" {send_user "Время ожидания истекло\r" ; exit 2}"
  }}
  exit 0
  expect eof
EOF
#Вторая команда EXPECT
expect <<EOF
spawn ssh $username@$H
while 2 { expect {
  "(yes/no)" {send "yes\r"}
  "*assword:" {send "$password\r"}
  "$H:" {break}
  "name *" {send_user "Подключение не выполнено\r" ; exit 1}
  "timeout" {send_user "Время ожидания истекло\r" ; exit 2}
}}
send "sudo mkdir /home/user/.cron\r"
expect "пароль для *:" {send "$password\r"}
expect "Файл существует*" {send_user ".cron существует\r" }
send "sudo cp /home/administrator/crontab/crontab/del.sh /home/user/.cron\r"
expect "пароль для *:" {send "$password\r"}
send "sudo crontab -u user /home/administrator/crontab/crontab/reg\r"
expect "пароль для *:" {send "$password\r"}
send "sudo rm -rf /home/administrator/crontab\r"
expect "пароль для *:" {send "$password\r"}
exit 0
expect eof
EOF
then
  (zenity --info --title="EXPECT SCPT" --text="Выполнен: $H")
else
  (zenity --error --title="EXPECT SCPT-ERROR" --text="Не выполнен: $H")
fi
else
  (zenity --error --title="EXPECT SCPT-ERROR" --text="Скрипт не выполнен")
fi
#Завершение преобразования на скрипт $H
done
  • Вопрос задан
  • 339 просмотров
Пригласить эксперта
Ответы на вопрос 1
saboteur_kiev
@saboteur_kiev Куратор тега bash
software engineer
1. ну вам же два раза пишет, что "Permission denied" {send_user "Подкл...".

2. Зачем вы мучаетесь с паролем и expect, если можно настроить ssh ключи и жить спокойно, как все люди, а не светить реальный пароль на тостере посторонним?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы