LINUX.ORG.RU

>замены TCL/Expect

Можно заменить TCL, но никогда нельзя заменить TCL/TK.

anonymous
()

не знаю, как там с телнетом, но обычный ftp лечится просто:

ftp -n -i server<<EOF
quote user username
quote pass password
get *
quit
EOF

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

> не знаю, как там с телнетом...

да, с телнетом сложнее.....

>ftp -n -i server<<EOF >quote user username >quote pass password >get * >quit >EOF

это отличный пример для ftp.

но, если потребуется требуется анализировать вывод сервера, да и еще и реагировать по-разному, это будет реализовать несколько сложнее при помощи простого перенаправления ввода-вывода.

mezantrop
() автор топика
Ответ на: комментарий от stimpack80

>>не знаю, как там с телнетом, но обычный ftp лечится просто:

Если программа может "интерактивно" жрать ввод из стандартного файла ее не надо "лечить".

ИМХО весьма полезная утилитка.

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

меньше, проще, управляется напрямиг из shell'а. т.е. к I/O применимы команды типа echo, cat, grep.

mezantrop
() автор топика

Очень не хватает ожидания альтернативных строк - к примеру 'ssh user@host' может выдать как приглашение для ввода пароля так и запрос на сохранения ключа удаленной машины. Сейчас красиво обработать данную ситуацию нельзя.

Было бы неплохо реализовать нечто вроде:

empty -w "assword:" "topsecret" -w "(yes/no)" yes

Плюс при отсутствии заданного отклика - выходить с кодом выхода, соответствующему позиции ожидаемой строки в списке аргументов, т.е. если увидели "assword:" - rc=1, если "(yes/no)" - rc=2.

Плюс к этому - зачем вообще пользователю заморачиваться с какими-то именами fifo? mktemp(3) вам в руки. Пусть программа при запуске выводит всю необходимую информацию для своей работы. Т.е.:

# empty -f cmd args EMPTY_FIFO_IN=/tmp/XXXXXXX.fifo EMPTY_FIFO_OUT=/tmp/YYYYYYY.fifo EMPTY_PID=ZZ

Соотвественном запускать ее в скрипте так:

eval `empty -f cmd args`

После этого становятся определенными переменные окружения EMPTY_*, которые и используются при последующих запусках empty [-s|-w].

И назначение ключа '-k' тоже непонятно. Послать сигнал процессу можно более известным способом :) Лучше бы этот ключик завершал работу процесса ${EMPTY_PID} ;)

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

все хорошо, но empty не сможет установить переменные окружения, которые были бы видны в команднике из которого эта empty запущена. Соответственно последующие empty их не увидят.

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

>Очень не хватает ожидания альтернативных строк - к примеру 'ssh >user@host' может выдать как приглашение для ввода пароля так и запрос >на сохранения ключа удаленной машины. Сейчас красиво обработать данную >ситуацию нельзя.

это мысль хорошая, обдумаю.

>Плюс к этому - зачем вообще пользователю заморачиваться с какими-то >именами

с 0.6.0b уже можно и не заморачиваться если запускать без ключей -i и -o. Все само создасться и потом само удалиться.

>И назначение ключа '-k' тоже непонятно. Послать сигнал процессу можно >более известным способом :) Лучше бы этот ключик завершал работу >процесса ${EMPTY_PID} ;)

именно для этого он и предназначен :)

mezantrop
() автор топика

Если вы вдруг начали использовать empty, очень прошу сообщить мне на email zmey20000@yahoo.com или, зная ленность людей, сюда в форум следующую информацию: а. свой uname -a б. если не слишком сложно, что вам понравилось в empty, а что нет.

Хочется знать, на что ориентироваться в следующих версиях.

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

> все хорошо, но empty не сможет установить переменные окружения, > которые были бы видны в команднике из которого эта empty запущена. > Соответственно последующие empty их не увидят.

ivoronin@babylon:~$ alias empty="echo EMPTY_FIFO=/tmp/fifo" ivoronin@babylon:~$ empty EMPTY_FIFO=/tmp/fifo ivoronin@babylon:~$ echo $EMPTY_FIFO

ivoronin@babylon:~$ eval `empty` ivoronin@babylon:~$ echo $EMPTY_FIFO /tmp/fifo ivoronin@babylon:~$

Что я не так делаю?

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

зачем так сложно?

empty -f telnet localhost empty -w ogin luser empty -w assword luserpass ... ... empty -s cat /etc/passwd ... ...

empty -e exit

mezantrop
() автор топика
Ответ на: комментарий от ivoronin

Упс!

empty -f telnet localhost
empty -w ogin luser
empty -w assword luserpass
...
...
empty -s cat /etc/passwd
...
...

empty -e exit

mezantrop
() автор топика
Ответ на: комментарий от ivoronin

> Что я не так делаю?

> ivoronin * (*) (20.09.2005 12:34:56)

а я не знаю, что ты хочешь. Что делаешь то и получаешь. Выполняешь в текущем шелле команду echo EMPTY_FIFO через подстановку выполнения своего алиаса empty, потом проверяешь, что ее значение установлено. Это нормально. Но делаешь ты это в текущем шелле, а не наследуешь переменную окружения от сыновьего процесса - это в принципе невозможно. Наследуются только экспортированные переменные от родителя. Азы как-бы.

2 mezantrop

Извините, что мы отвлеклись, а под FreeBSD-4.X ее не тестили?

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

сорри, не команду echo EMPTY_FIFO, а команду EMPTY_FIFO=....

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

>Извините, что мы отвлеклись, а под FreeBSD-4.X ее не тестили? вроде бы нет, но не вижу причин чтобы не работала :)

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