2

Казалось бы, простой вопрос, который дает слегка нежелательные результаты.

Запустите putty для запуска скрипта на удаленном сервере Linux, который требует ввода данных пользователем.

Удаленный скрипт выполняет read -p "Please enter name" NAME
Я могу использовать plink для выполнения скрипта по SSH, ниже показаны следующие попытки и проблемы:- Обратите внимание, что -load ns - это загрузить сеанс, который не существует, т.е. убедитесь, что по умолчанию не используются

1) plink.exe -load ns <ip_addr> -l <user> -pw <password> <script path/name> Проблема) Не разрешает / не показывает ввод пользователя, т.е. он не интерактивен.

2) Добавьте -t чтобы выделить pty:-
plink.exe -t -load nc <ip_addr> -l <user> -pw <password> <script path/name> Проблема) Хорошо, теперь пользовательский ввод можно увидеть, но я получаю Ctrl+H (^ H) когда нажата клавиша возврата, хорошо, если пользователь не ошибся!

3) Используйте замазку вместо сохраненного сеанса
putty.exe -load "SavedSession"
Проблема) (а) Откройте новое окно, не слишком большое, но не такое приятное. (б) сохраненный сеанс не может быть легко перемещен. (c) Получите запрос пароля, не можете предоставить пароль, как в случае с plink, я знаю, я знаю, используйте ключи, но это закрытая частная сеть, и с ключами проще не беспокоиться!

Поэтому в идеале я хотел бы, чтобы SSH выполнялся в строке, то есть из оболочки командного файла / командной строки, в которой я нахожусь, не запрашивая имя пользователя / пароль, запуская сценарий linux и позволяя работать подсказкам и delete / backspace.

Большое спасибо за любые идеи / решения заранее.

1 ответ1

2

Добавьте -t, чтобы выделить pty ... Хорошо, теперь пользовательский ввод можно увидеть, но я получаю Ctrl+H (^ H) при нажатии клавиши Backspace

Запустите ваш скрипт [ -t 0 ] && stty erase ^H и клавиша Backspace должна быть принята.

Еще лучшим решением является использование порта OpenSSH - например, порта Cygwin или MinGW - он даст вам полную эмуляцию терминала, как это делает PuTTY, но сохранит его в окне консоли. (Инструмент plink предназначен для 8-битной передачи необработанных данных.)

Изменить: Недостатком Cygwin может быть отсутствие поддержки IPv6 (если я правильно помню).


Получите подсказку пароля, не можете предоставить пароль как с plink

[...] но это закрытая частная сеть, и с ключами проще не беспокоиться!

И все же у вас есть проблема, которую решит настройка ключей :)

(Мне будет грустно говорить это, но PuTTY также принимает -pw .)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .