Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Терминал. Программирование в Shell  (Прочитано 5124 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: Терминал. Программирование в Shell
« Ответ #15 : 29 Марта 2011, 16:28:25 »
http://alexey.sveshnikov.ru/blog/tag/netcat/
Где-то в недрах форума есть ссылки на описания netcat. Поищите и найдете обязательно.
http://www.xakep.ru/post/14690/default.asp
Там есть тексты в ссылках.
Полное описание netcat (чтобы все просмотреть надо пройтись по всем 7 урокам).
http://www.intuit.ru/department/security/issec/1/1.html
« Последнее редактирование: 29 Марта 2011, 16:50:58 от alexander.pronin »

Оффлайн Gambit_88

  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
Re: Терминал. Программирование в Shell
« Ответ #16 : 29 Марта 2011, 21:09:46 »
Спасибо за ссылки. На 7 странице в ИНТУИТ как раз нужный раздел Создание конвейеров данных: создай собственный FTP.
Думал воспользоваться примером
nc -l -u 55555 < /etc/passwdНо чего-то не доходит до меня, как таким образом можно получить файл.. Пусть открыт в 1 терминале порт 55555, и даже если удается добраться со 2-го терминала до /etc/passwd, то терминал-то остается висеть в режиме ввода... и приходится прерывать задачу ^C. Выходит та же ситуация, как и в первом моем случае.

nc -l 1111 < file_we_want
nc localhost 1111 > copy_of_file
Такой способ работает, но для этого нужно при открытии порта указывать и имя передаваемого файла, а если он не существует, а создается в процессе работы скрипта (как делаю я), то возникнет ошибка.

Нужны советы. :-\

Оффлайн Torna

  • Новичок
  • *
  • Сообщений: 40
    • Просмотр профиля
Re: Терминал. Программирование в Shell
« Ответ #17 : 30 Марта 2011, 00:49:44 »
не совсем понял. Но, возможно, можно споступить так
screen
nc -l -u 55555 < /etc/passwd
screen -d

Файл можно перезаписать, линь такой наглости не заметит. Было бы легче обсуждать, видя полный код программы.

Оффлайн Gambit_88

  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
Re: Терминал. Программирование в Shell
« Ответ #18 : 30 Марта 2011, 12:09:39 »
Полный код:
p=`pwd`
echo -n "Каталог: "
read a
netcat -l 1112 > $p/out # Тут хотелось бы чтобы и порт открытым остался на приём данных от следующей команды, и чтобы сам переход к след. команде был выполнен
echo `cd "$a"; ls | netcat 127.0.0.1 1112` | netcat 127.0.0.1 1111

Думал еще вывести результат ls в файл, а уже его забрать вторым терминалом, но такой способ тоже останавливается на второй строке (да и смысл 2-й команды не ясен, тут же не обращение к первому терминалу происходит, а повторное открытие порта 1111).
echo `cd "$a"; ls > l` | netcat 127.0.0.1 1111 -q 5
netcat -l 1111 < $a/l
« Последнее редактирование: 30 Марта 2011, 19:07:10 от Gambit_88 »

Оффлайн ConstAntz

  • Любитель
  • *
  • Сообщений: 52
    • Просмотр профиля
Re: Терминал. Программирование в Shell
« Ответ #19 : 31 Марта 2011, 04:32:16 »
помогите советом

script_one
echo "hello"
script_two
pipe=
echo "$pipe, world!"

К чему приравнять pipe, чтобы пытаясь выполнить
script_one | script_twoполучить "hello, world!"?

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Терминал. Программирование в Shell
« Ответ #20 : 31 Марта 2011, 06:12:35 »
ConstAntz, выбирайте:
pipe="$(cat /dev/stdin)"
pipe="$(cat)"
pipe=`cat`
read pipe

 

Страница сгенерирована за 0.075 секунд. Запросов: 21.