Пароль не читается при выполнении команды смены пароля с использованием строки записи в оболочке

У меня есть код, с помощью которого я открываю plink для SSH-соединения с помощью команды оболочки, где я могу запустить любую команду методом StdIn.Writeline, кроме команды смены пароля. Если я запускаю команду смены пароля, я не могу ввести пароль методом StdIn.Writeline. Команда похожа на set usr pwd. Эта команда выполняется отлично, и после ее выполнения она запрашивает «Введите текущий пароль». Здесь метод WriteLine не может ввести пароль.

Ниже приведен пример кода и вывода:

Run = filename & " " & strCompAddress & " -P " & strServerPOrt & " -l " & strServerUser & " -pw " & strServerPassword
Set osh = CreateObject("Wscript.Shell")
Set oEx = osh.exec(Run)

oEx.StdIn.WriteLine "command 1" 'This command runs fine'
oEx.StdIn.WriteLine "command 2" 'This command runs fine'
oEx.StdIn.WriteLine "command 3" 'This command runs fine'
oEx.StdIn.WriteLine "set usr wd" 'This command runs fine'
oEx.StdIn.WriteLine "current_pwd" 'This doesn't input the password and it stucks here  
oEx.StdIn.WriteLine "new_pwd"
oEx.StdIn.WriteLine "new_pwd"
oEx.StdIn.WriteLine "exit"

Вывод похож на множество команд управляющей последовательности.

command 1 
command 2
command 3
set usr pwd
current_pwd
new_pwd
new_pwd
exit

Command 1
result
ok

command 2
result 
ok

command 3
result
ok
set usr pwd
Enter Current Password:

person Lookin    schedule 06.09.2016    source источник
comment
Какой это язык? У вас 3 разных тега. vb.net ‹› vba ‹› vbscript.   -  person Comintern    schedule 07.09.2016
comment
Запрос пароля явно не читается из StdIn. Для получения дополнительной помощи предоставьте дополнительную информацию об удаленной системе и фактической команде, которую вы используете.   -  person Ansgar Wiechers    schedule 07.09.2016
comment
Коминтерн - это vba @AnsgarWiechers Удаленная система представляет собой модифицированную версию Linux box, и фактическая команда устанавливает пароль пользователя после выполнения этой команды. Введите текущий пароль: появляется приглашение, и после ввода пароля отображается приглашение ввести новый пароль и - введите новый пароль.   -  person Lookin    schedule 07.09.2016
comment
Если это удаленная машина с Linux, я бы предложил вместо этого использовать Telnet. Эта ссылка поможет вам начать работу.   -  person Comintern    schedule 07.09.2016
comment
@Comintern Используете незащищенный протокол telnet для смены пароля? Как вы можете рекомендовать такую ​​ерунду?   -  person Martin Prikryl    schedule 07.09.2016
comment
@MartinPrikryl - достаточно справедливо, но лишь немногим более бессмысленно, чем изменение любого пароля через VBA (или любой язык сценариев, если на то пошло). Независимо от метода, реальный ответ: Убедитесь, что администратор сервера доволен тем, что вы пытаетесь сделать.   -  person Comintern    schedule 07.09.2016
comment
Если у нас могут быть скрипты для смены пароля через bash, то не вижу смысла обсуждать, почему vba.   -  person Lookin    schedule 07.09.2016


Ответы (1)


Команда set user password (или что-то еще), возможно, предназначена для чтения пароля только из терминала, а не из стандартного ввода. Это обычная функция безопасности, позволяющая избежать именно такой автоматической смены пароля.

Попробуйте включить интерактивный/терминальный режим с помощью командной строки Plink переключатель -t.

Это заставит ввод Plink быть перенаправленным на виртуальный терминал и может сделать вашу команду счастливой.


Убедитесь, что администратор сервера доволен тем, что вы пытаетесь сделать.

person Martin Prikryl    schedule 07.09.2016
comment
Спасибо, Мартин! наконец, кто-то здесь попытался дать конструктивный ответ на этот вопрос, иначе я получил расплывчатые ответы. К сожалению, переключатель -t не работал. Кроме того, что касается того, что администратор доволен тем, что я делаю, я являюсь администратором этой лаборатории и пробую ее в тестовой лаборатории :) - person Lookin; 07.09.2016