LINUX.ORG.RU

Сообщения hama

 

Собрать листинг, не скачивая файлов

Приветствую. Существует следующие каталоги на веб сервере (http://<host>/abc/):

host:

abc
-qwerty
--123.php
--321.jpg
-pop3
--123.txt
--321.txt
--pop4
---zx.txt

Т.е. при открытие /abc/ веб сервер показывает наличие существующих директорий и файлов. Необходимо рекурсивно собрать имеющийся листинг директорий, но не скачивая файлов. Открываем 'abc' сохраняем вывод в файл, видим что данная директория содержит еще поддиректории, открываем каждую следующую директорию и так же сохраняем в файл.

Я знаю что существует параметр -r у wget, но wget начинает скачивать каждый имеющиеся файлы, а нужно просто сохранить лишь сам листинг.

Может кто то можно такое осуществить при помощи wget или какие то решения?

 , ,

hama
()

Python, регулярные выражения

Привет, у меня есть следующий патерн для строк:

AAAAA<td>00-01-23-3f-8f-dd</td>AAAAA

AAAAA

AAAAA<td><!--#mac-->00-01-23-3f-8f-dd</td>AAAAA

мне необходимо выбрать из них «00-01-23-3f-8f-dd». Понимаю что должно быть что то вроде,

data = re.findall(r'(<td>(.*-->)?(.*)<\/td>)', my_strings)
Т.е. нужно выбирать все что между <td> и </td>, но за <td> так же может следовать ".*-->".

не не могу до конца доделать. Буду рад если подскажите решение.

 

hama
()

sed: выводит только последние вхождение

Есть длинная строка

[..."serialNumber":"1","subject":"service.site.com","issuer":"CA","validFrom":1455235200000,"validTo":1,"numLogs":3,"hash":"a","firstDnsName":"service.site.com","numDnsNames":1},{"serialNumber":"4","subject":"vc.site.com","issuer":"abc","validFrom":4,"validTo":3,"numLogs":3,"hash":"a","firstDnsName":"vc.site.com","numDnsNames":1}...]

нужно из нее выбрать значения subject т.е. получить на выходе

service.site.com

vc.site.com

Столкнулся с двумя проблемами:

1.

sed 's/^.*subject":"\(.*\)".*$/\1/' ./1.txt

Выбираем только то что после subject между "", и вроде бы логично и должно корректно работать, но не работает.

2. Даже с этой кривой регуляркой sed выбирает только последние вхождение в этой строке, а не все.

Врачи, подскажите как лечить.

 

hama
()

Генерировать последовательные строки

Здравствуйте, подскажите способ сгенерировать следующую строки:

blabla[AA]blabla[A]

blabla[AA]blabla[B]

...

blabla[AB]blabla[B]
т.е. часть blabla является статической, части в [] динамические. В динамический частях нужно что бы генерировались последовательно буквы (A-Z), т.е. AAA, AAB, ..., BAA и т.д.

 , ,

hama
()

curl и простой GET-запрос

Нужно отправить простой GET запрос при помощи curl который должен выглядит следующим образом, GET 123/<foobar/ HTTP/1.1

curl -v -X «GET 123/<foobar/» <host>

* Connected to <host> (<host>) port 80 (#0)
GET 123/<foobar/ / HTTP/1.1
User-Agent: curl/7.37.1
Host: <host>
Accept: */*

Но curl автоматически вставляет " / HTTP/1.1" от себя, как это обойти?

Что-то я туплю, доктор.

Мне бы так же хватило что-то вроде

echo -e «GET 123/<foobar/ HTTP/1.0» > telnet <host>

Но у меня не получилось реализовать это при помощи telnet.

 ,

hama
()

Sed, awk -мультистроки

Здравствуй врач,

В файле есть следующие блоки:

=======02=======

abc1234abc
abc1234abc
abc1234abc
=======

=======03=======

qwerty
=======

=======abc=======

abc1234abc
abc1234abc
abc1234abc
=======

Каждый блок начинается и заканчивается «=», нужно удалить блок в котором всегда строка «qwerty». Логика как я понимаю должна быть примерно следующая, если ^= qwerty =$ то удаляем. Покажите, пожалуйста, как работать с блоками в sed или awk. При помощи grep всеравно такое не сделать, ибо он построчно читает файл.

 ,

hama
()

Bash+MySQL и список из файла

Хочу передать команды, строки из файла в Mysql. Делаю так,

( for i in `cat ./comand.txt`; do printf «select $i;»;done) | mysql -u root -pqwertyuiop

cat ./comand.txt

version()

SYSTEM_USER()

все выполняется. Но если в файле будет некорректная команда, команда которая спровацирует ошибку то команды из файла выполнены не будут.

cat ./comand.txt version()

SYSTEM_USER()

blabla

bla

version()

Второй version() не выполнится.

Почему так происходит? Ведь по логике скрипт должен идти дальше. Как лечить, врачи?

 

hama
()

bash и перевод строки

Стоит следущая задача, нужно проверять определенный список с веб-серверами на наличие директории, решил как умею:

for i in `cat ./input.txt` ; do echo $i;curl -i -k -v --max-time 5 $i/redirect |grep -Ei "Location:"|awk -F/ '{print "/"$4"/" }';done  

Открываем список, передаем вхождение в curl, и если происходит редирект то грепаем заголовок перенаправления и выводим результат. Вывод получается в данном формате:

http://ip.ip.ip.ip

/redirect_me/

что как бы логично, но данный формат неудобен, не могу добиться следующего формата (в одну строку):

http://ip.ip.ip.ip/redirect_me/

подскажите как привести вывод к данному формату. Спасибо.

 

hama
()

Чтение и сохранение в один файл, ./file.txt > ./file.txt

Есть файл из которого нужно выкинуть определенную строку, делаю это так:

grep -v «foobar» ./file.txt

Хотелось бы сразу сохранить эти изменения в этом же файле, что то вроде:

grep -v «foobar» ./file.txt > ./file.txt

но как вы понимаите в таком случаи файл окажется пустым. ЛОР, научи как правильно такое делать.

 

hama
()

Bash и пробел

Здравствуй ЛОР, хотелось бы спросить у вас варианты выполнения команды «ping localhost» но без явного указания в ней пробела. Пока что для себя я нашел следующие варианты, это:

{ping,localhost}

ping${IFS}localhost

SP=$'\x20';ping${SP}localhost ну или вырезание самого пробела из какой либо переменной (${var:start:offset})

знаите ли вы какие то другие способы?

 

hama
()

Узнать состояние домена из терминала

Возможно ли как нибудь узнать при помощи команды в терминале зарегистрирован ли определенный домен или свободен для регистрации? Все эти свистелки и перделки вида WEB 2-3.0 достали. Возможно есть какие то онлайн сервисы которые выдают адекватно информацию без подключения JS и т.д., если таковые есть то можно им при помощи curl слать запрос и фильтровать ответ. Подскажи решение, ЛОР.

 

hama
()

Нумерация пакетов в tshark

В обоих системах одинаковая команда (tshark -Nt -f «host myhost.com»)

Windows

  1   0.000000    10.0.2.15 -> 92.223.112.104 TCP 62 1096 > https [SYN] Seq=0 Win=64240 Len=0 MSS=1460 SACK_PERM=1
  2   0.022018 92.223.112.104 -> 10.0.2.15    TCP 60 https > 1096 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0 MSS=1460
  3   0.022065    10.0.2.15 -> 92.223.112.104 TCP 54 1096 > https [ACK] Seq=1 Ack=1 Win=64240 Len=0
  4   0.022921    10.0.2.15 -> 92.223.112.104 SSL 377 Continuation Data
  5   0.023060 92.223.112.104 -> 10.0.2.15    TCP 60 https > 1096 [ACK] Seq=1 Ack=324 Win=65535 Len=0

Как мы видим под виндой пакету присваевается номер, что я считаю удобно, не могу добиться того же результата в убунте. Не смог нагуглить флаг для нумерации.

Ubuntu

 0.000000    10.0.2.15 -> 92.223.112.104 TCP 74 49224 > https [SYN] Seq=0 Win=14600 Len=0 MSS=1460 SACK_PERM=1 TSval=463966 TSecr=0 WS=128
 0.019933 92.223.112.104 -> 10.0.2.15    TCP 60 https > 49224 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0 MSS=1460
 0.020102    10.0.2.15 -> 92.223.112.104 TCP 54 49224 > https [ACK] Seq=1 Ack=1 Win=14600 Len=0
 0.020335    10.0.2.15 -> 92.223.112.104 SSL 378 Continuation Data
 0.020465 92.223.112.104 -> 10.0.2.15    TCP 60 https > 49224 [ACK] Seq=1 Ack=325 Win=65535 Len=0

 

hama
()

who и last -доверие

Команды who и last как мы знаем берут свой вывод из простых бинарных файлов, что ставит под сомнения их вывод.

Спорили с товарищем по этому поводу, возможно ли доверять этим командам в целом? Пришли к выводу что все будет конечно зависить от ситуации, если мы знаем что сервер скомпрометирован то тут уже никакого доверия быть не может. А как быть в более простых ситуациях? Должен ли админ в повседневной работе доверять их выводу? Что считаешь, ЛОР?

Альтернативы?

 

hama
()

Один запрос за два

Соединяюсь с хостом

openssl s_client -connect my_host:443
затем хост ожидает от меня заголовки (т.е. ввод), так вот, есть ли возможность передать эту команду и заголовки одной строкой? Что то вроде:

openssl s_client -connect my_host:443 < «GET / HTTP/1.1»

что бы юзер скопировал и выполнил всё за один раз.

 

hama
()

No such file or directory

На флешке NTFS, при просмотре директории из какого либо графического файлового менеджера я не вижу данный файл, но

find ./

.//123abc.pdf

ls |grep "123"

123abc.pdf

find ./ -type f -exec md5 {} \;

find: .//123abc.pdf: No such file or directory

И это не единственный файл. Что за магия такая, ЛОР.

hama
()

Apache, обращение по IP

Только что заметил одно странное поведение у своего хоста. При обращение к нему по домену все отлично работает и открывается, но если обратиться по IP-адресу то открывается пустая директория, без каких либо файлов. Я так понимаю что в настройках апача видимо не указан домен «по умолчанию» или? Подскажите куда смотреть.

К сожалению, доступа к конфигу на данный момент нету, поэтому не могу его выложить.

hama
()

ping 224.0.0.1: Debian, OS X

Пингую 224.0.0.1 что бы посмотреть какие хосты присутствует в своей подсети. Debian и Mac подключены к одному роутеру.

Пингую с Debian:

ping  224.0.0.1
PING 224.0.0.1 (224.0.0.1) 56(84) bytes of data.
64 bytes from 192.168.178.1: icmp_req=1 ttl=64 time=2.28 ms
64 bytes from 192.168.178.1: icmp_req=2 ttl=64 time=2.38 ms
^C
--- 224.0.0.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 2.227/2.768/4.176/0.816 ms

Все отлично, вижу свой роутер, собственно больше ничего и нет.

Пингую с гей оси OS X:

ping 224.0.0.1
PING 224.0.0.1 (224.0.0.1): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
^C
--- 224.0.0.1 ping statistics ---
3 packets transmitted, 0 packets received, 100.0% packet loss

Пустота в ответ. Дополнительная проверка 192.168.178.1 на Маке:

ping 192.168.178.1
PING 192.168.178.1 (192.168.178.1): 56 data bytes
64 bytes from 192.168.178.1: icmp_seq=0 ttl=64 time=4.730 ms
64 bytes from 192.168.178.1: icmp_seq=1 ttl=64 time=5.151 ms
^C
--- 192.168.178.1 ping statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss

не понимаю почему он в Маке на пинг 224.0.0.1 не отвечает. Где спрятался слон товарищи?

С обоих систем на 192.168.178.1 отдается веб-интерфейс роутера.

hama
()

Linux vs GNU/Linux

Продолжаем пятницу, по мотивам данного поста. Не холивара ради, товарищи, а ради науки.

А вы знаете когда и в каких ситуациях корректно упортреблять «Linux» и «GNU/Linux»? Я вот не знаю, ибо не познал просветления. Корректно ли будет в своем резюме писать GNU/Linux? Воистину.

hama
()

Минимальная единица объема информации для записи в файл

Цитата из «Unix и Linux. Руководство системного администратора» (http://www.ozon.ru/context/detail/id/7607778/):

Однако следует иметь в виду, что программа, которая реализует запись данных в файл, может буферизировать свои выходные данные. Даже если строки будут добавляться регулярно (с точки зрения логики), они могут стать видимыми только фрагментами объемом 1 или 4 Кбайт (KiB).

И тут я окончательно запутался, то что программа может использовать буферизацию вполне логично и понятно. Всегда считал что программа может записать в файл если информации на запись минимум один байт, но данная цитата с присущими в ней приставками сбили с толку. Поясните русским языком. да-да, стыдно.

hama
()

Страсти cURL'овы

При обращение к директории site/1/ сервер показывает её содержание (поддиректории и файлы с различным расширением). Стоит задача, забрать себе все содержимое. При помощи Wget (wget -m --no-parent) задача решает просто, но его нет на сервере. Возможно ли при помощи cURL забрать все файлы (в том числе и рекурсивно) из имеющейся директории? Я так понимаю это невозможно.

hama
()

RSS подписка на новые темы