Как передать переменную в команду s sh в оболочке - PullRequest
0 голосов
/ 13 июля 2020

Я пишу сценарий для s sh сервера.

У меня есть сервер, на котором требуется код подтверждения и пароль для входа, и я хочу, чтобы сценарий мог войти на сервер и запустить какой-то сценарий на сервере каждый день (crontab).

У меня есть доступ только к серверу, и я не могу установить crontab на сервере. Поэтому я хочу настроить crontab и скрипт на моем собственном сервере.

(Если я не могу запустить скрипт на сервере, по крайней мере, я хочу войти на свой сервер с помощью однострочной команды.)

Cur rnet Flow

user ~% ssh xxxx@example.com

The authenticity of host 'example.com' can't be established.
RSA key fingerprint is SHA256?[yyyyyyyyyyyyyyyyyyy].
Are you sure you want to continue connecting (yes/no/[fingerprint])? (yes)
Verification code:  (input)
Password: (input)

xxxx$ ./a.sh

Пишу команду ниже

print "(verification code)\n(pwd)\n" | ssh -t -t xxxx@example.com

Думаю, что эта команда пройдет " код , введите, пароль"для s sh и выполните однострочную команду входа в систему.

Однако результат будет

Verification code: | (cursor)

Кто-нибудь может мне помочь, как это исправить (пусть скрипт автоматически нажимает ввод) ??

Ответы [ 2 ]

0 голосов
/ 13 июля 2020

Во-первых, у меня нет ответа, если "проверочный код и пароль для входа в систему" - единственная настройка аутентификации на сервере.

Поскольку вы не упомянули аутентификацию на основе ключа в своем вопросе, я бы Предлагаем выяснить, возможен ли этот вариант.

Используйте это, чтобы сгенерировать приватные / publi c ключи для машины, отправляющей команду:

ssh-keygen -t rsa

Обычно ключи создаются в ~ / .s sh (id_rsa и id_rsa.pub).

Затем используйте это для авторизации входа на сервер:

ssh-copy-id xxxx@example.com

Это добавит ваш publi c ключ (~ /.ssh/id_rsa.pub) в ~ / .ssh / authorized_keys на сервере.

0 голосов
/ 13 июля 2020

Используйте sshpass, например:

sshpass -p <password> ssh <username>@<remote-address> ./a.sh
...