LINUX.ORG.RU
ФорумAdmin

Однострочник для визуализации состояния модема

 , , ,


0

2

Наваял тут спросонья ужас, летящий на крыльях ночи:

lena@desktop-lena:~$ curl -d "username=admin&password=admin&exec_cgis=login_CGI" http://192.168.1.1/cgi-bin/login.exe && curl -G "http://192.168.1.1/index.stm?title=Status-Modem" | sed -e 's/<\/.*>//g;s/.*<b>$//g;s/<s.*$//g;s/^.*if.*$//g;s/^[ \t]*//g;s/^doc.*$//g;s/<.*>//g' > test.txt
И после него выхлоп таков:
...
some_tech_info
integer





another_info
another_integer






...

т.е. остались всякие 0x0D и 0x0A, как показывает вот этот послецензурный файлик: http://paste.ubuntu.com/1504376/ http://rghost.ru/42792089

Так вот, дорогие мои любители однострочников в ночь перед Рождеством, как убрать все лишние пробелы и переводы строк наиболее элегантным способом?

Ну а юные тролли могут сразу переключиться с моих кодоопусов на </ront> и иже с ним от команды Linksys

★★★★★

Ответ на: комментарий от Spirit_of_Stallman

«Плавали, знаем» (с) Плавали-Знаем
Пробовал, не полегчало - файл с двух сторон приложен

minakov ★★★★★
() автор топика

как убрать все лишние пробелы и переводы строк наиболее элегантным способом

cat test.txt | perl -ne 's@\s@@g; print'

Bers666 ★★★★★
()

html2text вас интересует?

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

Странная конструкция, как проснусь, попробую, спасибо. 2 anonymous: нет, хтмл это и так текст

minakov ★★★★★
() автор топика
Ответ на: комментарий от Bers666

Почти идеально, если не считать, что я теряю после этого вообще все разделители, к коим можно привязаться для парсинга IP и так далее...

minakov ★★★★★
() автор топика
$ perl -E 'local$/;$_=<>;say"$1 $2"while/\G.*?<font style="f[^>]++>([^<]++).*?<b>(?:<[^>]++>)?\s*([^\r\n<]++)/gs' <test.txt  
Software Version: 1.19.00
ADSL Version: 6.0.2.0
Boot Code Version: 0.01
MAC Address: 00-00-00-00-00-00
DSL Status: UP
DSL Modulation Mode: Auto
DSL Path Mode: INTERLEAVED
Downstream Rate: 8154 Kbps
Upstream Rate: 511 Kbps
Downstream Margin: 28 db
Upstream Margin: 23 db
Downstream Line Attenuation: 12
Upstream Line Attenuation: 11
Downstream Transmit Power: 13
Upstream Transmit Power: 12
LOS Errors: 0
PVC Status: UP
Encapsulation: RFC 2516 PPPoE
Multiplexing: LLC
QoS: UBR
PCR Rate: 4000
SCR Rate: 4000
MBS: 10
Autodetect: Disable
VPI: 0
VCI: 40
PPP Login: Up
Internet IP Address: 8.8.8.1
Internet Netmask: 255.255.0.0
Internet Gateway: 8.8.8.8
System Uptime: 0 Days; 0 Hours; 0 Minutes
$ _
arsi ★★★★★
()

<font style=«font-size: 8pt» face=«Arial»>VCI:</ront>

</ront>

валидация хтмл? не, не слышали.

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

Ух-ты! Спасибо за повод понять регэкспы получше!

minakov ★★★★★
() автор топика

просто к слову:

$ $ lynx --dump ./test.html | grep ":" | sed -r 's/ //g'
SoftwareVersion:1.19.00
ADSLVersion:6.0.2.0
BootCodeVersion:0.01
MACAddress:00-00-00-00-00-00
DSLStatus:UP
DSLModulationMode:Auto
DSLPathMode:INTERLEAVED
DownstreamRate:8154Kbps
UpstreamRate:511Kbps
DownstreamMargin:28db
UpstreamMargin:23db
DownstreamLineAttenuation:12
UpstreamLineAttenuation:11
DownstreamTransmitPower:13
UpstreamTransmitPower:12
LOSErrors:0
PVCStatus:UP
Encapsulation:RFC2516PPPoE
Multiplexing:LLC
Autodetect:Disable
VPI:0
VCI:40
PPPLogin:Up
InternetIPAddress:8.8.8.1
InternetNetmask:255.255.0.0
InternetGateway:8.8.8.8
а по правильному snmp, сильно удивлюсь если в linksys`е его нет

MKuznetsov ★★★★★
()
Ответ на: комментарий от minakov

Хотя браузерами парсить хтмл, конечно интересно

minakov ★★★★★
() автор топика
Ответ на: комментарий от MKuznetsov

Он есть, но я слабо понимаю принцип его работы, учитывая, что мне нужно исключительно вывести ^^^ ту табличку как можно быстрее, ну и привязать кнопочку в GTK для быстрой перезагрузки роутера

minakov ★★★★★
() автор топика
Ответ на: комментарий от MikeDM

насколько помню, «[ \t]*» делает то же самое, а он есть в треде

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

и привязать кнопочку в GTK для быстрой перезагрузки роутера

перегружать если что вдруг ? что должно случиться что роутер требует перезагрузки..в snmp есть trap`ы - можно настроить что роутер сам отрапортует о проблемке.

просто в связке с snmp получиться приложение не привязанное к linksys`у конкретной модели и конретной прошивке - более универсальная штуковина выйдет, которая может и потом без переделок пригодится.

хотя если вещь разовая и срочная - то можно не напрягаясь брать страницу модемной админки lynx`ом и отфильтрованную подавать в gtk. По сравнению с curl+perl - примерно одно и то-же, основное время тратиться на загрузку приложений и конвеер, а не на обработку текста.

зы если по быстрому, я-бы на tcl/tk сделал :) хотя, хозяин-барин

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

Нет, заготовка уже ждет кнопочки, спасибо. С lynx есть проблема - я не люблю лишнего в системе, потому его нет. А SNMP после вики предстал ужасным монстром со строками похлеще регекспов от sed - **, **, 2,3,1,3,8,4,2,7,9,0,0. i.f. ** чего-то-там

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

[чисто художественный трёп]

С lynx есть проблема - я не люблю лишнего в системе

у меня в системах всегда есть (e)links как аварийный броузер для консоли и lynx как раз вот для таких случаев.

SNMP после вики предстал ужасным монстром

и SNMP при установленных mib выражается вполне осмысленно и главное легко парсится скриптами. Вики конечно штука хорошая, но некоторые статьи там хм.. излишне детальны что-ли - не совсем для newbees в вопросе.

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

Новопчёлкой меня еще никто не обзывал :) Есть links с -dump, я проглядел его в package_list'инге, который в pacman совал, это да, но при всем, показалось, что sed, или даже perl будет чуть лучше отдельного бравзера для удаления тегов html.

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

[чисто художественный трёп again]

Новопчёлкой меня еще никто не обзывал :)

есть множество тем где я тоже новопчёлка. по любому это лучше старопня

sed, или даже perl будет чуть лучше отдельного бравзера для удаления тегов html.

не будет, разве что действительно просто удаление тегов.

Броузер строит визуальное представление (хоть и текстовое) как пользователь его видит. Если есть чёткие зацепки и можно выдернуть данные прямо оттуда - это идеальный способ. Иначе tidy,DOM,обход дерева и всякие libxml,xpath :)

А то общие друзья из linksys в следущей прошивке сделают валидный html+css и придётся снова мучительно выдумывать «однострочник» не привязанный к логике страницы.

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

Это ирония по поводу newbees, вместо newbies. На самом деле, по теме, мне даже форматированная страница подошла бы - выводить то надо просто на «поглядеть». Но ночью захотелось оправдать бессонницу и понеслось... Самое главное, что все получилось, и ежели кому надо будет сниппет, добро пожаловать в джаббер или сюда. Чуть позже выложу исходник на си с кучей system(); :)

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