13 Сентябрь, 2014

Проверяем сайт на наличие битых ссылок

В этом деле нам поможет старый добрый wget:

wget --spider -o ~/site_ru.log -e robots=off -w 1 -r -p http://site.ru

Краткая расшифровка опций:

  • --spider, режим «паука», файлы при сканировании не сохраняются, сохраняются только заголовки ответа сервера

  • -o, указываем куда нам сохранять лог

  • -e robots=off, говорим что не хотим следовать правилам robots.txt (по умолчанию wget их учитывает)

  • -w, выставляем тайм-айт между запросами в 1 секунду (можно отключить если уверены в мощности хостинга)

  • -r, включаем рекурсивный обход сайта

  • -p, делаем все запросы для загрузки сайта включая подгрузку css,js и например изображений

Проверяем свой улов на наличие 404 ошибок - grep -B 2 '404' ~/site_ru.log

Кстати, сюда также попадут и ссылки у которых просто в теле адреса есть слово 404 (пример hamdeew.ru/page/bitriks-delaem-stranicu-404-pravilno)

Все бы хорошо, да этот метод не покажет нам битые ссылки на чужие ресурсы. А это довольно важно - например у вас могут подгружаться картинки с других ресурсов и т.д.

Я нашел решение которое работает не на 100 процентов и оно довольно кривое (из-за некотрых особенностей wget), но тем не менее мне оно помогло отыскать битые ссылки на картинки и найти одну 404.

mkdir ~/test/

cd ~/test/

Директорию создаем т.к. метод довольно грязный - создает кучу пустых директорий в процессе работы.

wget -r -l 1 -H -p -o ~/test/site_ru_out.log --spider -e robots=off http://site.ru/

И затем прогоняем получившийся у нас site_ru_out.log грепом как и в первом случае + еще один прогон для проверки ссылок на несуществующие ресурсы:

grep -B 2 'failed' ~/site_ru.log

Надеюсь что вам этот способ помог. Удачи!

02 Сентябрь, 2014

Если есть права на запись, но демон не может туда писать

Возникла такая проблема - в конфиге MySQL выставил путь для записи временных таблиц отличный от стандартного /tmp и выставил соответствующие права на запись в новый каталог. Но MySQL не стартовал ругаясь на отсутствие прав на запись. Долго думал пока не вспомнил про Apparmor.

И правда - в конфиге apparmor был профиль для демона MySQL. Проблема решилась дописыванием в конфиг нового каталога и service apparmor reload.

В Ubuntu 14.04 конфиг лежит тут: /etc/apparmor.d/usr.sbin.mysqld

30 Август, 2014

Быстро узнать информацию о железе

Иногда возникает необходимость быстро узнать информацию о железе установленном на компьютере под управлением Linux. В этом случае довольно часто можно услышать про утилиты типа lshw,lspci,dmidecode и получении информации из /proc/. Но есть оказывается и более удобная утилита агрегирующая вывод соответствующих утилит и в некоторых дистрибутивах она уже имеется по умолчанию (например в Linux Mint). Встречайте inxi!

Так, например узнать краткую инфу о железе можно вызнав inxi с ключем -b

Образец:

System:    Host: rail-LIFEBOOK-A530 Kernel: 3.13.0-24-generic x86_64 (64 bit) 
           Desktop: Xfce 4.11.6 Distro: Linux Mint 17 Qiana
Machine:   System: FUJITSU product: LIFEBOOK A530
           Mobo: FUJITSU model: FJNBB06 Bios: FUJITSU // Phoenix version: Version 1.19 date: 08/15/2011
CPU:       Dual core Intel Core i3 CPU M 380 (-HT-MCP-) clocked at 933.00 MHz 
Graphics:  Card: Intel Core Processor Integrated Graphics Controller 
           X.Org: 1.15.1 drivers: intel (unloaded: fbdev,vesa) Resolution: 1366x768@60.1hz 
           GLX Renderer: Mesa DRI Intel Ironlake Mobile GLX Version: 2.1 Mesa 10.1.0
Network:   Card-1: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller driver: r8169 
           Card-2: Qualcomm Atheros AR9285 Wireless Network Adapter (PCI-Express) driver: ath9k 
Drives:    HDD Total Size: 120.0GB (49.8% used)
Info:      Processes: 250 Uptime: 8 days Memory: 2286.2/7782.2MB Client: Shell inxi: 1.8.4 

Советую набрать man inxi и подробнее почитать про ключи, так например -D расскажет об установленных жестких дисках, а -C выдаст подробную инфу по CPU.

05 Апрель, 2014

Простейший SSH-прокси

Делается очень просто, одной командой в терминале:

ssh -D 5555 user@remotehost -f -N

-D 5555 - эмуляция SOCKS сервера через порт 5555

-f - работа в фоне, после аутентификации

-N - не запускать shell на удаленном хосте

Теперь в настройках ПО добавляем в качестве SOCKS5-прокси адрес localhost:5555

01 Апрель, 2014

Как залить файлы на Яндес.Диск с сервера по WebDAV

Тут на самом деле все просто. Главное чтобы у вас просто был в наличии аккаунт Яндекс.Диска и собственно сервер с которого мы собираемся заливать файлы.

Все делается одной командой:

curl --user user@yandex.ru:password -T file.txt https://webdav.yandex.ru/

Как видите - все очень просто! =)

Новые записи →Home← Старые записи