Содержание статьи
Вопросы и ответы
Q: Как в Linux узнать, какой именно процесс попал в swap?
A: Для этого можно воспользоваться несколькими вариантами. Начнем с самого доступного, с top. Для того чтобы посмотреть, какие процессы засвопились, нужно, запустив утилиту top, нажать f, затем выбрать
SWAP = Swapped Size (KiB)
и нажать d, тем самым мы добавим новый столбец. Более продвинутая утилита — htop, про нее уже не раз писали на страницах журнала. Действия аналогичны, только меняются кнопки. Чтобы добавить нужный столбец, нажимаем F2, открывается меню, где выбираем columns. В столбце Available columns находим nswap и нажимаем F5 и F10, тем самым добавив новый столбец и применив изменения. Помимо консольных утилит, можно воспользоваться полезным скриптом:
#!/bin/bashSUM=0
OVERALL=0
for DIR in `find /proc/ -maxdepth 1 -type d -regex "^/proc/[0-9]+"`do PID=`echo $DIR | cut -d / -f 3` PROGNAME=`ps -p $PID -o comm --no-headers` for SWAP in `grep VmSwap $DIR/status 2>/dev/null | awk '{ print $2 }'` do let SUM=$SUM+$SWAP done if (( $SUM > 0 )); then echo "PID=$PID swapped $SUM KB ($PROGNAME)" fi let OVERALL=$OVERALL+$SUM SUM=0
doneecho "Overall swap used: $OVERALL KB"
Скрипт не требует прав root, это делает его еще более полезным и удобным.
Q: Как узнать свой MAC и IP на Android?
A: Для этого можно воспользоваться готовыми приложениями вроде Fing, которое, кстати, покажет еще кучу всего интересного о сети и устройствах в ней. Так же и со встроенными возможностями андроида. Для этого нужно перейти в «Настройки → Об устройстве → Состояние», где будет отображена информация об IP-адресе, MAC устройства, уровне заряда батареи и серийном номере.
Q: Как синхронизовать у контроллера домена и по совместительству NTP-сервера время с внешним источником?
A: Для начала нужно понять, с чем пытаться синхронизовать контроллер. Выполним команду:
W32tm /query /configuration
Нам нужен параметр Type в блоке TimeProviders, скорее всего, там будет стоять NT5DS — это значение по умолчанию для компьютера, входящего в домен. Для отдельно стоящего компьютера должен быть установлен NTP, так же, если мы хотим контроллер синхронизовать с внешним источником. Открываем ветку реестра HKLM\System\CurrentControlSet\services\W32Time\Parameters. Здесь в первую очередь нас интересует параметр Type, который задает тип синхронизации. Он может принимать следующие значения:
- NoSync — NTP-сервер не синхронизируется с каким‑либо внешним источником времени. Используются часы, встроенные в микросхему CMOS самого сервера;
- NTP — NTP-сервер синхронизируется с внешними серверами времени, которые указаны в параметре реестра NtpServer;
- NT5DS — NTP-сервер производит синхронизацию согласно доменной иерархии;
- AllSync — NTP-сервер использует для синхронизации все доступные источники.
Выставляем NTP и переходим к параметру NtpServer, в котором указываются NTP-серверы, с которыми будет синхронизировать время данный сервер. По дефолту в этом параметре прописан NTP-сервер Microsoft (time.windows.com, 0x1), при необходимости можно добавить еще несколько NTP-серверов, введя их DNS-имена или IP-адреса через пробел. В конце каждого имени можно добавлять флаг, это 0x1, который определяет режим для синхронизации с сервером времени. Допускаются следующие значения:
- 0x1 — SpecialInterval, использование специального интервала опроса;
- 0x2 — режим UseAsFallbackOnly;
- 0x4 — SymmetricActive, симметричный активный режим;
- 0x8 — Client, отправка запроса в клиентском режиме.
Остается только перезапустить службу и синхронизоваться с новым источником:
net stop w32time && net start w32time
w32tm /resync /rediscover
Q: Как через консоль примонтировать шару локального Win-сервера через Ubuntu?
A: Для монтирования напишем небольшой скрипт. Он будет из файла тянуть названия шар и монтировать их на /mnt/share. Собственно сам код:
#!/bin/bashfor i in `cat ./share`do mount -t cifs $i /mnt/share/ -o user=user,pass=pass > /dev/null 2>&1
done
Как видишь, здесь все довольно просто. Правда, стоит учитывать, что логин и пасс в данном примере будут храниться в открытом виде.
Q: Есть ли программа для мониторинга сети из консоли, аналогичная htop?
A: Да, есть такая! Называется nethogs, ставится из репозитория:
sudo apt-get install nethogs
Понимает IPv4 и IPv6, поддерживает PPP, все показывает в реальном времени. На сайте разработчика можно увидеть идеи для следующих версий утилиты.
Q: Как заставить работать ZAP с локальным сайтом?
A: Здесь все достаточно просто. Запущенный веб‑сервер работает на определенном порту, скажем 8080. Когда ты включаешь ZAP, он тоже пытается заработать на этом порту. Выходит конфликт, и прокси не стартует, так как порт уже занят веб‑сервером. Поэтому здесь довольно прозрачное решение: нужно подвинуть порт прокси на, скажем, 8081-й и запустить. Также стоит отметить, что у многих браузеров по дефолту стоят настройки не использовать прокси на localhost и 127.0.0.1. Это тоже нужно перенастроить, тогда ZAP будет перехватывать все запросы.
Q: Есть ли какое-то более красивое решение, чем ps aux | grep foo | grep -v grep, для того, чтобы убрать саму команду grep, которая успевает просочиться в вывод?
A: Есть! Можно воспользоваться подобной конструкцией:
ps aux | grep [f]oo
Фишка в том, что регулярка [f]oo совпадет со строкой foo в списке процессов, но не совпадет со строкой grep [f]oo, которая может появиться в этом списке. Как по мне, это решение более изящно.
Q: Когда стоит применять RIP, а когда уже OSPF для маршрутизации в сети?
A: Для начала немного определений. Routing Information Protocol — один из самых простых протоколов маршрутизации. Применяется в небольших компьютерных сетях, есть ограничение на 15 хопов, что не дает применять его в больших сетях. Преимущество этого протокола — простота конфигурирования. Open Shortest Path First — протокол динамической маршрутизации, основанный на технологии отслеживания состояния канала и использующий для нахождения кратчайшего пути алгоритм Дейкстры. Более навороченный и современный протокол. Имеет высокую скорость сходимости по сравнению с дистанционно‑векторными протоколами, поддерживает сетевые маски переменной длины и умеет оптимально использовать пропускную способность с построением дерева и кратчайших путей. Переходя к практике, обращу твое внимание, что на этот вопрос можно ответить только исходя из определенных условий по задаче. Если совсем абстрагироваться, то скажем так: когда подсети исчисляются десятками, то вполне справляется RIP, в случае же, когда сетей сотни и больше, здесь уже нужно применять OSPF. Это, конечно же, весьма грубо, и каждый пример нужно разбирать и так или иначе проектировать.
Q: Почему top и htop в Linux показывают разные значения памяти?
A: Все потому, что в отличие от top утилита htop показывает все процессы в системе. Утилита htop отображает только ту память, которая действительно используется приложениями, то есть кеш и буферы ядра не учитываются, там они выделяются отдельным цветом. Напротив, в выводе команды top указывается число используемой памяти плюс буфера. В качестве примера — аналогично с top ведет себя команда free.
Q: Что означает запись > /dev/null 2>&1?
A: В юникс‑системах существуют так называемые стандартные потоки ввода‑вывода, это потоки процесса, имеющие номер (дескриптор), зарезервированный для выполнения некоторых «стандартных» функций. Самые распространенные — это STDIN, STDOUT и STDERR.
- Поток номер 0 (stdin) зарезервирован для чтения команд пользователя или входных данных.
- Поток номер 1 (stdout) зарезервирован для вывода данных, как правило (хотя и не обязательно) текстовых.
- Поток номер 2 (stderr) зарезервирован для вывода диагностических и отладочных сообщений в текстовом виде.
К ним можно обращаться по номеру. Также есть еще /dev/null, это что‑то типа черной дыры, куда можно спихнуть весь неугодный вывод программы, чтобы он не мозолил глаза. Вооружившись новыми знаниями, расшифруем, что получается в строке > /dev/null 2>&1. Весь вывод скрыть с глаз, а сообщения о диагностике и отладке вывести на экран пользователя.
Q: Какую тулзу порекомендуешь для соединения с удаленными машинами по ssh\rdp\vnc?
A: Попробуй mRemoteNG, это опенсорсная мультипротокольная тулза для работы. Поддерживает следующие протоколы:
- RDP (Remote Desktop/Terminal Server);
- VNC (Virtual Network Computing);
- ICA (Citrix Independent Computing Architecture);
- SSH (Secure Shell);
- Telnet (TELecommunication NETwork);
- HTTP/HTTPS (Hypertext Transfer Protocol);
- rlogin;
- Raw Socket Connections.
Имеет простенький ничем не перегруженный интерфейс и предельно проста в работе.
Q: Каким сканером можно потестить XXS’ки?
A: Попробуй для этого воспользоваться сканером XSSYA. Он написан на питоне и может работать как на Win, так и на Linux. Поддерживает HTTPS, может распознать три типа WAF (Mod_Security — WebKnight — F5 BIG IP) и может работать в нескольких режимах сканирования, которые предлагает при запуске. Данный инструмент включен в хак‑сборку BlackArch.
Q: Есть ли какой-то консольный инструмент для управления сетевыми настройками под Windows?
A: Да, на Win есть очень мощный инструмент, позволяющий локально или удаленно отображать и изменять параметры сети текущего компьютера. Это утилита netsh или network shell — тулза, включенная в линейку продуктов операционных систем Microsoft Windows NT начиная с Windows 2000. Пользоваться ею можно двумя способами: непосредственно перемещаться по дереву настроек в интерактивном режиме (для понимания, какие команды можно использовать, обращайся к справке командой ? или /?) или можно писать команды напрямую. Вот несколько примеров:
- Открыть порт на своей машине — netsh firewall set portopening tcp 445 smb enable
- Показать все правила брандмауэра — netsh advfirewall firewall show rule name=all
- Подключиться к уже определенной беспроводной сети — netsh wlan connect ssid=‘mySSID’ - - name=‘WLAN-Profil1’
- Показать IP-адрес — netsh interface ip show config
- Установить статический IP-адрес — netsh interface ip set address «Local Area connection» static 10.0.0.9 255.0.0.0 10.0.0.1 1
Как видишь, тулза весьма полезна и позволяет использовать свои команды в сценариях, что делает ее еще более практичной.
Все познается в сравнении
Q: Как можно сравнить два файла на совпадение строк в двух столбцах и как сравнить строки на совпадение в одном столбце?
A: Это довольно распространенная задача, и в ее решении нужно исходить из начальных данных и их объема. Скажем, для сравнения двух столбцов в xls-файлах небольшого размера достаточно будет простого редактора таблиц. Тот же Excel, LibreOffice или OpenOffice легко справятся с этой задачей. При сравнении данных в консоли подойдет команда diff или comm. У них огромное количество параметров и способов сравнения двух столбцов. Кстати, если xls-файл имеет объем в гигабайт и выше, то здесь спасет только консоль. Самое простое сравнение — это что‑то похожее на
diff file1 file2
comm file1 file2
Случай, когда нужно сравнить строки одного столбца, более интересный. Волшебной команды, которая бы это делала самостоятельно, нет. Поэтому мы напишем скрипт. Для простоты понимания разобьем задачу на более мелкие и решим их. Для начала нам нужно отсортировать записи и удалить повторяющиеся, результат мы поместим во временный файл temp2. Также создадим temp1, где будут храниться просто сортированные записи. Остается сравнить два файла temp1 и temp2 на несоответствие и получить результирующий файл. Останется только удалить временные файлы. Сам код:
#!/bin/bashecho -n "Enter some path file > "read path
cat $path | sort | uniq -u > temp2
cat $path | sort > temp1
comm -3 temp1 temp2 | uniq -c | sort -n > result_video.csv
rm temp1 && rm temp2
У команды comm очень интересный вывод, она может вывести три столбца. В последнем — самое интересное для нас, чем мы и воспользуемся в нашем скрипте. Как видишь, все довольно просто. При желании код можно изрядно сократить и улучшить, добавив различные рюшечки и обработку исключений. Но как учебный костяк, который весьма прост в понимании, самое то.
Изучаем поведение системы
Расскажи про тулзу vmstat, что у нее есть полезного в выводе?
- Vmstat — одна из утилит, которые следует привлечь в первую очередь при проблемах с сервером, скажем высоком Load Average. Она позволяет вывести информацию об использовании памяти, дисков, процессора. Простой запуск без ключей выведет табличку, разбитую на шесть разделов: procs, memory, swap, io, system и cpu. В качестве параметров запуска можно указать время обновления статистики и количество выводов. Скажем, команда
vmstat
выведет данные пять раз с интервалом в две секунды.2 5 - Procs отображает данные по процессам. r — количество процессов в очереди на выполнение процессором, в случае если значение больше 0 — явно нагрузка на процессор. b — количество процессов, ожидающих операций I/O, если значение больше 0, значит, нагрузка на диски и/или файловую систему. Memory — память. swpd — количество блоков, перемещенных в swap, free — свободная память, но без учета памяти, занятой буферами и кешем, в принципе то же, что выводит free, buff — буферы памяти и cache — кеш.
- Swap — данные по свопу. si (swap in) — количество блоков в секунду, которое система считывает из раздела или файла swap в память, so (swap out) — наоборот, количество блоков в секунду, которое система перемещает из памяти в swap. В идеале, значение обоих столбцов должны быть около нуля или по крайней мере не более десяти блоков в секунду. System — информация о системе. in (interrupts) — количество прерываний в секунду и cs (context switches) — количество переключений между задачами.
- CPU — как ты уже догадался, процессор. us (user time) — процент времени CPU, занятый на выполнение «пользовательских» (не принадлежащих ядру) задач, sy (system time) — процент времени CPU, занятый на выполнение задач ядра (сеть, I/O задачи, прерывания и прочее), id (idle) — процент времени в бездействии (ожидании задач), wa — процент времени CPU, занятый на ожидание операций I/O.
- Помимо полезностей на экране, тулза еще имеет кучу разных ключей, вот, к примеру, некоторые из них:
- -s — изменение вида отображение результатов (в две колонки);
- -d — статистика использования дисков;
- -S [k | K | m | M] — с указанием, в чем выводить информацию (килобиты, килобайты, мегабиты, мегабайты соответственно).
Потянет или обвалится?
Подойдут ли домашние Wi-Fi-роутеры для малого и среднего офиса?
+
Для малого офиса однозначно должны подойти, ведь у некоторых дома устройств больше, чем в малом офисе. На основании этого можно сказать, что и для средненького офиса роутер тоже пойдет. Количество различных настроек, да и прошивок огромно, и в любой момент можно расширить функционал железки, а маленькая стоимость позволит купить даже несколько и покрыть более крупную область.
-
Очень многое зависит от количества клиентов и их целей. Если это ноутбуки, которым нужен быстрый скоростной интернет, для переговоров с клиентами и, скажем, таких клиентов около двадцати, плюс еще мобильные девайсы, интернет‑радио, YouTube. Точка обвалится мгновенно, просто не хватит мощностей. Устройства, которые продаются для создания корпоративных Wi-Fi-сетей, не зря стоят свои деньги. Это и качество, и мощность, и, что самое главное, надежность.