URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 3183
[ Назад ]

Исходное сообщение
"Аналог popen в sh"

Отправлено diam , 19-Июл-04 09:28 
Иногда возникает необходимость вызвать утилиту, которая считывает определённую информацию из stdin. Например, утилиты scp или ftp спрашивают пароль. В C можно воспользоваться функцией popen(). А что делать в sh? Причём перенаправление ввода типа
% scp file1 user@somemachine.com:/user/dir/file1 < password
не работает.
Спасибо.

Содержание

Сообщения в этом обсуждении
"Аналог popen в sh"
Отправлено DeadMustdie , 19-Июл-04 20:14 
>Иногда возникает необходимость вызвать утилиту, которая считывает определённую информацию из stdin. Например,
>утилиты scp или ftp спрашивают пароль. В C можно воспользоваться функцией
>popen(). А что делать в sh? Причём перенаправление ввода типа
>% scp file1 user@somemachine.com:/user/dir/file1 < password
>не работает.
>Спасибо.

echo "Мой Очень Секретный Пароль" | cat

man bash


"Аналог popen в sh"
Отправлено diam , 20-Июл-04 10:19 
>>Иногда возникает необходимость вызвать утилиту, которая считывает определённую информацию из stdin. Например,
>>утилиты scp или ftp спрашивают пароль. В C можно воспользоваться функцией
>>popen(). А что делать в sh? Причём перенаправление ввода типа
>>% scp file1 user@somemachine.com:/user/dir/file1 < password
>>не работает.
>>Спасибо.
>
>echo "Мой Очень Секретный Пароль" | cat
>
>man bash


Если команда
echo "Мой очень секретный пароль" | scp ...
То работать не будет, так как scp не поддерживает pipe'ы.


"Аналог popen в sh"
Отправлено ihor , 20-Июл-04 10:33 
scp (как и многие другие программы) не читает пароль из STDIN.
посмотри на Expect (http://expect.nist.gov/).


"Аналог popen в sh"
Отправлено sas , 20-Июл-04 10:42 
>>>Иногда возникает необходимость вызвать утилиту, которая считывает определённую информацию из stdin. Например,
>>>утилиты scp или ftp спрашивают пароль. В C можно воспользоваться функцией
>>>popen(). А что делать в sh? Причём перенаправление ввода типа
>>>% scp file1 user@somemachine.com:/user/dir/file1 < password
>>>не работает.
>>>Спасибо.
>>
>>echo "Мой Очень Секретный Пароль" | cat
>>
>>man bash
>
>
>Если команда
>echo "Мой очень секретный пароль" | scp ...
>То работать не будет, так как scp не поддерживает pipe'ы.

Вы можете попробывать использовать expect, т.к. он создает псевдо-терминал для подпроцессов. Но я считаю, что это совсем не правильно. Гораздо разумнее использовать возможности аутентификации/авторизации с использование public ключей. Читайте man по ssh

Удачи
--- sas


"Аналог popen в sh"
Отправлено Проходящий мимо , 20-Июл-04 10:56 
man ssh-keygen

ключевое слово authorized_keys


"Аналог popen в sh"
Отправлено diam , 20-Июл-04 11:42 
Я решил делать аутентификацию по ключам.
Большое спасибо за помощь!