Использование команд bash до и после ожидаемого скрипта - PullRequest
0 голосов
/ 21 декабря 2018

Короче говоря, я ищу имя моего скрипта, в котором пользователю будет предложено ввести имя хоста для jumpbox, логина и пароля, а затем скрипт выполнит ряд команд, таких как устройства проверки связи, файлы scpна другие хосты и т. д. В настоящее время у меня просто есть скрипт, запускающий простой ls -lrt.

Однако, когда я запускаю скрипт, все входит в систему просто отлично, но затем скрипт завершается, как только я вхожухост-машина.Я смотрю, как остановить скрипт после входа в систему, чтобы я мог затем запустить новые команды из скрипта.

Я просмотрел здесь несколько страниц, и ничего, что я нашел, на самом деле не говорит об этом.

#!/bin/bash
echo -n "Logging in to server at HOSTNAME"
echo
echo -n "Hostname:"
read -s host
echo
echo -n "Username:"
read -s user
echo
echo -n "Password:"
read -s PWD
echo

/usr/bin/expect <<EOF
set timeout 1
spawn ssh $user@$host
expect "password:"
send "$PWD\n"
expect eof


ls -lrt

Вот результаты, которые я получаю:

Logging in to server at
Username:
Password:
spawn ssh user@host
user@host's password:

-bash-4.1$ home/Desktop:~ userid$

home / Desktop: ~ userid $ - это приглашение вернуться в мое окно сеанса за пределами Jumpbox.

1 Ответ

0 голосов
/ 21 декабря 2018

Ваш синтаксис для expect не выглядит правильным.Согласно вашему запросу, вы хотите scp файлы на удаленный хост, в любом случае я могу помочь вам с синтаксисом:

/usr/bin/expect <<EOF
set timeout -1
spawn /usr/bin/sftp ${user_name}@${HOSTNAME}
expect "password:"
send "${passwd}\r"
expect "sftp>"
send "cd /the_path/to_put_files/\r"
expect "sftp>"
send "mput *\r"
expect "sftp>"
send "bye\r"
EOF

ls -lrt

set timeout -1 == для отправки n файлов на удаленныйсервер без ограничения времени ожидания.

Надеюсь, это поможет.

...