Решено: вывод правил в столбец

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

zakachkin
Сообщения: 137

Решено: вывод правил в столбец

Сообщение zakachkin »

вот кусок скрипта:

Код: Выделить всё

#!/bin/bash
#
SHAP=`/usr/bin/ssh root@192.168.0.1 -p 4444 /usr/abills/libexec/linkupdown pppd up eth0 user 192.168.26.56 OS=Linux debug | grep /sbin/tc`
echo $SHAP

Так мой NAS получает правила шейпера, но получает из в строчку, вот так:

Код: Выделить всё

/sbin/tc filter del dev ppp999 protocol ip parent 1: prio 23113 &>/dev/null /sbin/tc filter del dev ppp999 protocol ip parent ffff: prio 23112 &>/dev/null /sbin/tc class del dev ppp999 parent 1: classid 1:5a49 &>/dev/null /sbin/tc class add dev ppp999 parent 1: classid 1:5a49 htb rate 5000Kibit /sbin/tc filter add dev ppp999 protocol ip parent 1: prio 23113 u32 match ip src 0.0.0.0/0 match ip dst 192.168.26.56 flowid 1:5a49 /sbin/tc filter add dev ppp999 protocol ip parent ffff: prio 23112 u32 match ip src 192.168.26.56 match ip dst 0.0.0.0/0 flowid 1: /sbin/tc qdisc add dev ppp999 parent 1:5a49 handle 10: sfq perturb 10 quantum 5

как сделать чтоб вывод был по уму?
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Решено: вывод правил в столбец

Сообщение drBatty »

zakachkin писал(а):
02.03.2010 00:06
как сделать чтоб вывод был по уму?

echo "$SHAP"
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
zakachkin
Сообщения: 137

Re: Решено: вывод правил в столбец

Сообщение zakachkin »

drBatty писал(а):
02.03.2010 00:49
zakachkin писал(а):
02.03.2010 00:06
как сделать чтоб вывод был по уму?

echo "$SHAP"

оно так и стоит... ели вы не увиели...
однако выводит так

Код: Выделить всё

Cannot find device "root"
Unknown qdisc "ffff:", hence option "ingress" is unparsable
/sbin/tc filter del dev ppp0 protocol ip parent 1: prio 3001 &>/dev/null /sbin/tc filter del dev ppp0 protocol ip parent ffff: prio 3000 &>/dev/null /sbin/tc class del dev ppp0 parent 1: classid 1:bb9 &>/dev/null /sbin/tc class add dev ppp0 parent 1: classid 1:bb9 htb rate 5000Kibit /sbin/tc filter add dev ppp0 protocol ip parent 1: prio 3001 u32 match ip src 0.0.0.0/0 match ip dst 192.168.25.205 flowid 1:bb9 /sbin/tc filter add dev ppp0 protocol ip parent ffff: prio 3000 u32 match ip src 192.168.25.205 match ip dst 0.0.0.0/0 flowid 1: /sbin/tc qdisc add dev ppp0 parent 1:bb9 handle 10: sfq perturb 10 quantum 5

А мне нужно чтоб вот так было:

Код: Выделить всё

/sbin/tc filter del dev ppp0 protocol ip parent 1: prio 3001 &>/dev/null
/sbin/tc filter del dev ppp0 protocol ip parent ffff: prio 3000 &>/dev/null
/sbin/tc class del dev ppp0 parent 1: classid 1:bb9 &>/dev/null
/sbin/tc class add dev ppp0 parent 1: classid 1:bb9 htb rate 5000Kibit
/sbin/tc filter add dev ppp0 protocol ip parent 1: prio 3001 u32 match ip src 0.0.0.0/0 match ip dst 192.168.25.205 flowid 1:bb9
/sbin/tc filter add dev ppp0 protocol ip parent ffff: prio 3000 u32 match ip src 192.168.25.205 match ip dst 0.0.0.0/0  flowid 1:
/sbin/tc qdisc add dev ppp0 parent 1:bb9 handle 10: sfq perturb 10 quantum 5

Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Решено: вывод правил в столбец

Сообщение drBatty »

zakachkin писал(а):
02.03.2010 00:06
вот кусок скрипта:
Код
#!/bin/bash
#
SHAP=`/usr/bin/ssh root@192.168.0.1 -p 4444 /usr/abills/libexec/linkupdown pppd up eth0 user 192.168.26.56 OS=Linux debug | grep /sbin/tc`
echo $SHAP

zakachkin писал(а):
02.03.2010 00:58
оно так и стоит... ели вы не увиели...

чё? вы кавычек "неувели"???"""""""""""""""""""""""""""""""""""""""""""""""""""""""
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
zakachkin
Сообщения: 137

Re: Решено: вывод правил в столбец

Сообщение zakachkin »

drBatty писал(а):
02.03.2010 01:16
zakachkin писал(а):
02.03.2010 00:06
вот кусок скрипта:
Код
#!/bin/bash
#
SHAP=`/usr/bin/ssh root@192.168.0.1 -p 4444 /usr/abills/libexec/linkupdown pppd up eth0 user 192.168.26.56 OS=Linux debug | grep /sbin/tc`
echo $SHAP

zakachkin писал(а):
02.03.2010 00:58
оно так и стоит... ели вы не увиели...

чё? вы кавычек "неувели"???"""""""""""""""""""""""""""""""""""""""""""""""""""""""

Спасибо-)))
Спасибо сказали:
zakachkin
Сообщения: 137

Re: Решено: вывод правил в столбец

Сообщение zakachkin »

zakachkin писал(а):
02.03.2010 01:19
drBatty писал(а):
02.03.2010 01:16
zakachkin писал(а):
02.03.2010 00:06
вот кусок скрипта:
Код
#!/bin/bash
#
SHAP=`/usr/bin/ssh root@192.168.0.1 -p 4444 /usr/abills/libexec/linkupdown pppd up eth0 user 192.168.26.56 OS=Linux debug | grep /sbin/tc`
echo $SHAP

zakachkin писал(а):
02.03.2010 00:58
оно так и стоит... ели вы не увиели...

чё? вы кавычек "неувели"???"""""""""""""""""""""""""""""""""""""""""""""""""""""""

Спасибо-)))

А как привести echo $SHAP в исполнение?
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Решено: вывод правил в столбец

Сообщение drBatty »

zakachkin писал(а):
02.03.2010 02:56
А как привести echo $SHAP в исполнение?

выполнить строчку в $SHAP?

Код: Выделить всё

eval $SHAP

ЗЫЖ eval - мутная, опасная, и очень тормозная команда. лучше запишите переменную в файл

Код: Выделить всё

echo "$SHAP" > shap.sh

а потом выполните этот файл:

Код: Выделить всё

sh shap.sh
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
sgfault
Сообщения: 586
Статус: -

Re: Решено: вывод правил в столбец

Сообщение sgfault »

drBatty писал(а):
02.03.2010 16:28
ЗЫЖ eval - мутная, опасная, и очень тормозная команда. лучше запишите переменную в файл

eval - моя любимая команда, тк с ее помощью можно сделать аналог указателей :crazy: Но это, конечно, оффтоп :-)
Спасибо сказали:
Аватара пользователя
pilson66
Сообщения: 59
ОС: Debian Squeeze

Re: Решено: вывод правил в столбец

Сообщение pilson66 »

zakachkin писал(а):
02.03.2010 02:56
А как привести echo $SHAP в исполнение?

Например так:

Код: Выделить всё

pilson@pilson:/$ ttt="echo 123"
pilson@pilson:/$ echo $ttt
echo 123
pilson@pilson:/$ ``$ttt``
123


А вообще - очень советую набрать в гугле "Bash Advanced Scripting Guide 2.5 Rus"
Спасибо сказали:
Аватара пользователя
sgfault
Сообщения: 586
Статус: -

Re: Решено: вывод правил в столбец

Сообщение sgfault »

pilson66 писал(а):
02.03.2010 18:05
zakachkin писал(а):
02.03.2010 02:56
А как привести echo $SHAP в исполнение?

Например так:

Код: Выделить всё

pilson@pilson:/$ ttt="echo 123"
pilson@pilson:/$ echo $ttt
echo 123
pilson@pilson:/$ ``$ttt``
123


Вы привели весьма.. интересное решение.
Во-первых, оно неправильное (http://www.gnu.org/software/bash/manual/ba...nd-Substitution):

Код: Выделить всё

Command substitutions may be nested. To nest when using the backquoted form, escape the inner backquotes with backslashes.


во-вторых, двойная подстановка должна работать так:

Код: Выделить всё

#( v='echo echo echo 123'; $($( $v )) )

..parse..
  $($( $v ))

  | parameter expansion
  V

  $($(echo echo echo 123))

  |  command substitution
  V

  $(echo echo 123)

  | command substitution
  V

  echo 123

   | execute command
   V

  123 (это уже stdout)

Тем не менее `` `` работает не так и результат (у меня по крайней мере)

Код: Выделить всё

bash-4.0# ( v=' echo echo echo  123'; $($($v)) )
123
bash-4.0# ( v=' echo echo echo  123'; `` $v `` )
echo echo 123


т.е такой же, как и

Код: Выделить всё

bash-4.0# ( v=' echo echo echo  123'; $v )
echo echo 123

(те такое впечатление, что, когда написано `` ``, обратные кавычки вообще игнорируются)
Однако, если написать `` `` так, как указано в info bash (те `\` \``), то результат такой же, как и $($( ))

Код: Выделить всё

bash-4.0# ( v=' echo echo echo  123'; `\` $v \`` )
123

Может кто-нибудь объяснит почему `` `` работают не так, как $($( )) ?
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Решено: вывод правил в столбец

Сообщение drBatty »

sgfault писал(а):
02.03.2010 18:55
Может кто-нибудь объяснит почему `` `` работает не так, как $($( )) ?

ЕМНИП `` отличается от $() тем, что первая конструкция вообще не допускает вложенности, а вторая - допускает.
sgfault писал(а):
02.03.2010 16:50
ЗЫЖ eval - мутная, опасная, и очень тормозная команда. лучше запишите переменную в файл

eval - моя любимая команда, тк с ее помощью можно сделать аналог указателей crazy.gif Но это, конечно, оффтоп :-)

указатели - тоже мутные и опасные. Правда в компилируемых ЯП они работают очень быстро, но это лишь потому, что практически напрямую ложатся на машинный код всех CPU.

Тем не менее, практически все уязвимости основаны на глюках указателей.

А eval я тоже люблю использовать, но всё-же хочу предупредить...
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
pilson66
Сообщения: 59
ОС: Debian Squeeze

Re: Решено: вывод правил в столбец

Сообщение pilson66 »

sgfault писал(а):
02.03.2010 18:55
Вы привели весьма.. интересное решение.
Во-первых, оно неправильное (http://www.gnu.org/software/bash/manual/ba...nd-Substitution):

Неужели :) А Вы в скриптах никогда не встречали что-то типа qwe=`tade +%s` ?

во-вторых, двойная подстановка должна работать так:


А `` `` типо не двойная подстановка? :)
Спасибо сказали:
Аватара пользователя
sgfault
Сообщения: 586
Статус: -

Re: Решено: вывод правил в столбец

Сообщение sgfault »

pilson66 писал(а):
02.03.2010 19:13
Неужели :) А Вы в скриптах никогда не встречали что-то типа qwe=`tade +%s` ?

Это.. не понял, какое отношение одинарная подстановка имеет к двойной?
pilson66 писал(а):
02.03.2010 19:13
во-вторых, двойная подстановка должна работать так:

А `` `` типо не двойная подстановка? :)

Получается, что так. Если у вас другая версия баша - попробуйте у себя примеры из моего предыдущего поста, может получится что-то другое?

drBatty писал(а):
02.03.2010 19:10
sgfault писал(а):
02.03.2010 18:55
Может кто-нибудь объяснит почему `` `` работает не так, как $($( )) ?

ЕМНИП `` отличается от $() тем, что первая конструкция вообще не допускает вложенности, а вторая - допускает.

аа.. хм, я этого не знал. Это где-нибудь написано?
PS. И что такое 'ЕМНИП'?
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Решено: вывод правил в столбец

Сообщение drBatty »

pilson66 писал(а):
02.03.2010 19:13
Неужели smile.gif А Вы в скриптах никогда не встречали что-то типа qwe=`tade +%s` ?

насколько я понимаю, эта запись действительно "неправильная", в том смысле, что она устарела и не рекомендуется. хотя (пока) и работает.
sgfault писал(а):
02.03.2010 19:16
аа.. хм, я этого не знал. Это где-нибудь написано?
PS. И что такое 'ЕМНИП'?

Если Мне Не Изменяет Память

UPD а вот где она "НЕ рекомендуется" не нашёл, так-же не нашёл, где она "устаревшая" - просто "старый стиль" (old-style)
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Решено: вывод правил в столбец

Сообщение drBatty »

sgfault писал(а):
02.03.2010 19:16
аа.. хм, я этого не знал. Это где-нибудь написано?

там и написано: http://www.gnu.org/software/bash/manual/ba...nd-Substitution
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
sgfault
Сообщения: 586
Статус: -

Re: Решено: вывод правил в столбец

Сообщение sgfault »

drBatty писал(а):
02.03.2010 19:52
pilson66 писал(а):
02.03.2010 19:13
Неужели smile.gif А Вы в скриптах никогда не встречали что-то типа qwe=`tade +%s` ?

насколько я понимаю, эта запись действительно "неправильная", в том смысле, что она устарела и не рекомендуется. хотя (пока) и работает.

Хм.. ну, если то, что `` `` игнорируется можно назвать "работает", то конечно.
drBatty писал(а):
02.03.2010 20:00
sgfault писал(а):
02.03.2010 19:16
аа.. хм, я этого не знал. Это где-нибудь написано?

там и написано: http://www.gnu.org/software/bash/manual/ba...nd-Substitution

Хм.. действительно, если тут

Код: Выделить всё

Command substitutions may be nested. To nest when using the backquoted form, escape the inner backquotes with backslashes.

подразумевается, что ` ` не может быть вложенным, то да. Хотя странно, что не написали это явно.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Решено: вывод правил в столбец

Сообщение drBatty »

sgfault писал(а):
02.03.2010 20:32
Хм.. ну, если то, что `` `` игнорируется можно назвать "работает", то конечно.

ну я вообще с подозрением к любым косвенным командам отношусь, а уж к косвенно-косвенным... только в самом крайнем случае.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
zakachkin
Сообщения: 137

Re: Решено: вывод правил в столбец

Сообщение zakachkin »

Люди спасибо меня вполне устроило это решение

Код: Выделить всё

eval $SHAP

Ибо эти правила надо было выполнить и благополучно о них забыть...
Спасибо сказали: