alxdon-rs
09-02-2015, 19:18
Задача: с машины, работающей под WindowsXP, требуется выполнить на Linux-хосте через telnet такую последовательность команд:
echo -e "secret\nsecret" | passwd ; exit
Пытаюсь сделать через plink:
plink.exe -telnet 192.168.1.1 "passwd; exit"
Проблема: команды не посылаются. Тогда пробую выполнить скрипт, размещеный на локальной машине:
plink.exe -telnet 192.168.1.1 -m z.sh
Та же проблема: команды не посылаются. Тогда пробую через перенаправление стандартных потоков:
echo "passwd; exit" | plink.exe -telnet 192.168.1.1
# "passwd; exit"
/bin/ash: passwd; exit: not found
Проблема: из-за кавычек удаленный хост выполняет строку как цельную команду. Без кавычек же работает:
echo passwd; exit | plink.exe -telnet 192.168.1.1
Но проблема в том, что мне нужно выполнить цепочки команд:
echo echo -e "secret\nsecret" | passwd ; exit | plink.exe -telnet 192.168.1.1
"passwd" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
Имеющиеся препятствия:
1) plink не передает команды на удаленный хост иначе как со стандартного ввода;
2) выполняющийся на локальной машине echo пытается перенаправить вывод в passwd, если не взять последовательность команд в кавычки;
3) кавычки же заставляют удаленный хост считать строку цельной командой;
4) ssh не включится до смены пароля, что, собственно и должен сделать мой скрипт;
5) ключи putty -telnet -m одновременно тоже не работают.
upd.:
Экранирование символа канала тоже не решило проблему:
>echo echo -e "secret\nsecret" ^| passwd ; exit | plink.exe -telnet 192.168.1.1
"passwd" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
echo -e "secret\nsecret" | passwd ; exit
Пытаюсь сделать через plink:
plink.exe -telnet 192.168.1.1 "passwd; exit"
Проблема: команды не посылаются. Тогда пробую выполнить скрипт, размещеный на локальной машине:
plink.exe -telnet 192.168.1.1 -m z.sh
Та же проблема: команды не посылаются. Тогда пробую через перенаправление стандартных потоков:
echo "passwd; exit" | plink.exe -telnet 192.168.1.1
# "passwd; exit"
/bin/ash: passwd; exit: not found
Проблема: из-за кавычек удаленный хост выполняет строку как цельную команду. Без кавычек же работает:
echo passwd; exit | plink.exe -telnet 192.168.1.1
Но проблема в том, что мне нужно выполнить цепочки команд:
echo echo -e "secret\nsecret" | passwd ; exit | plink.exe -telnet 192.168.1.1
"passwd" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
Имеющиеся препятствия:
1) plink не передает команды на удаленный хост иначе как со стандартного ввода;
2) выполняющийся на локальной машине echo пытается перенаправить вывод в passwd, если не взять последовательность команд в кавычки;
3) кавычки же заставляют удаленный хост считать строку цельной командой;
4) ssh не включится до смены пароля, что, собственно и должен сделать мой скрипт;
5) ключи putty -telnet -m одновременно тоже не работают.
upd.:
Экранирование символа канала тоже не решило проблему:
>echo echo -e "secret\nsecret" ^| passwd ; exit | plink.exe -telnet 192.168.1.1
"passwd" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.