LINUX.ORG.RU

script for interactive command


0

0

Нужно желательно на шелле (или любом другом скриптовом, если не получится) работать с интерактивными командами - как?

Элементарный пример: ввод пароля в ssh (знаю про auth keys, просто пример).

anonymous
Ответ на: комментарий от wfrr

точнее так

read -p "Press 'y' to install the bcm963xx DSL router source files: " -n 1 dr_continue
        echo ""
        echo ""
        if [ "$dr_continue" == "y" ] ; then
            echo ""
            if ! [ -d $bi_src_dir ] ; then
                echo "Creating directory $bi_src_dir."
                echo ""
                mkdir -p $bi_src_dir
            fi
            if [ -d $bi_src_dir ] ; then
                echo "Installing files from $bi_this_dir/$f."
                echo ""
                cd $bi_src_dir
                tar xfz $bi_this_dir/$f
                chmod -R 777 * .*
            else

wfrr ★★☆
()
Ответ на: комментарий от anonymous

>ссылка тут при чем? 

По ссылке выше приведенный код.

>нужно не читать, а писать.

Хм, тогда попробовать направлять пайпом .

radws% echo 'test'|read test_var
radws% echo $test_var
test

wfrr ★★☆
()
Ответ на: комментарий от wfrr

> radws% echo 'test'|read test_var

это не работает, потому что это пайп, и read должен запускаться в шелле-подпроцессе, соответственно переменная считается в нем и останется неизменной в родительском шелле.

dilmah ★★★★★
()

man expect, видимо

anonymous
()

> Нужно желательно на шелле (или любом другом скриптовом, если не получится) работать с интерактивными командами - как?

> Элементарный пример: ввод пароля в ssh (знаю про auth keys, просто пример).

Лучше примеров побольше: вопрос абсолютно не понятен, коли read не угодил...

Die-Hard ★★★★★
()
Ответ на: комментарий от anonymous

>да не, не читать говорю, а писать. Ввести пароль после ssh root@localhost автоматом в скрипте.

Дык, просто ssh специально проверяет, чтобы этого не делалось! Если именно это ("наколка" ssh) имелось в виду, то -- никак, видимо. Иначе это будет дыркой в ssh.

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

В чем тут "наколка" ssh'у не пойму?

Примеры - да любая прога, запрашивающая пароль или еще чего-нибудь. encfs, ftp, sshfs.

anonymous
()
Ответ на: комментарий от Die-Hard

> Дык, просто ssh специально проверяет, чтобы этого не делалось! Если именно это ("наколка" ssh) имелось в виду, то -- никак, видимо. Иначе это будет дыркой в ssh.

он специально проверяет, да, но если подсунуть ему псевдотерминал, то все должно работать.

С какой стати это дырка в ssh.

dilmah ★★★★★
()
Ответ на: комментарий от anonymous

Еще раз -- постарайся сформулировать вопрос понятнее, или жди гения :-). Моего интеллекта не хватает, чтобы понять твой вопрос.

Слова

> ...да любая прога, запрашивающая пароль или еще чего-нибудь. ...

вкупе с

> нужно не читать, а писать.

ставят меня в тупик :-)

Die-Hard ★★★★★
()
Ответ на: комментарий от dilmah

>и read должен запускаться в шелле-подпроцессе, соответственно переменная считается в нем и останется неизменной в родительском шелле.

radws% echo 'blasasa'|./test.sh blasasa radws% cat test.sh #!/bin/bash

read test_var echo $test_var

Что еще не так?

wfrr ★★☆
()
Ответ на: комментарий от wfrr

radws% echo 'blasasa'|./test.sh
blasasa
radws% cat test.sh
#!/bin/bash

read test_var
echo $test_var

Злобное форматирование, в ссш ввод пароля не работает, 
таким манером в ssh можно ввести лишь произвольную команду.

wfrr ★★☆
()
Ответ на: комментарий от dilmah

> ...но если подсунуть ему псевдотерминал, ...

:-)

Тогда в чем вопрос топикстартера?

Как работать из скрипта с интерактивными командами через псевдотерминал, что ли?

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

> нужно не читать, а писать.

Ну, тот-же пароль мы-же не читаем, а пишем программе.

Буду конкретен: выполнить набор команд по ssh без ключей. Т.е. ответить 'yes' на вопрос о продолжении коннекта, если это первое соединение, набрать пароль и выполнить команды.

# ssh root@172.16.0.1
The authenticity of host '172.16.0.1 (172.16.0.1)' can't be established.
RSA key fingerprint is 53:28:a2:30:9c:39:04:b7:00:3f:c1:31:55:29:8c:a3.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.16.0.1' (RSA) to the list of known hosts.
root@172.16.0.1's password: <password>

anonymous
()
Ответ на: комментарий от anonymous

> Буду конкретен: выполнить набор команд по ssh без ключей. Т.е. ответить 'yes' на вопрос о продолжении коннекта, если это первое соединение, набрать пароль и выполнить команды.

буду повторяться: http://empty.sourceforge.net/

dilmah ★★★★★
()
Ответ на: комментарий от Die-Hard

> Тогда в чем вопрос топикстартера?

> Как работать из скрипта с интерактивными командами через псевдотерминал, что ли?

Видимо, да. Не знал про них))

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.