Пе­ред тобой — выпуск руб­рики FAQ, где мы отве­чаем на самые раз­нооб­разные воп­росы об опе­раци­онных сис­темах Windows и Linux, рекомен­дуем софт, реша­ем раз­нооб­разные проб­лемы и даем хакер­ские советы.
 

Вопросы и ответы

Q: Как в Linux узнать, какой именно процесс попал в swap?

A: Для это­го мож­но вос­поль­зовать­ся нес­коль­кими вари­анта­ми. Нач­нем с самого дос­тупно­го, с top. Для того что­бы пос­мотреть, какие про­цес­сы зас­вопились, нуж­но, запус­тив ути­литу top, нажать f, затем выб­рать

SWAP = Swapped Size (KiB)

и нажать d, тем самым мы добавим новый стол­бец. Более прод­винутая ути­лита — htop, про нее уже не раз писали на стра­ницах жур­нала. Дей­ствия ана­логич­ны, толь­ко меня­ются кноп­ки. Что­бы добавить нуж­ный стол­бец, нажима­ем F2, откры­вает­ся меню, где выбира­ем columns. В стол­бце Available columns находим nswap и нажима­ем F5 и F10, тем самым добавив новый стол­бец и при­менив изме­нения. Помимо кон­соль­ных ути­лит, мож­но вос­поль­зовать­ся полез­ным скрип­том:

#!/bin/bash
SUM=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
done
echo "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/bash
for 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, все показы­вает в реаль­ном вре­мени. На сай­те раз­работ­чика мож­но уви­деть идеи для сле­дующих вер­сий ути­литы.

Nethogs
Nethogs

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.

Име­ет прос­тень­кий ничем не перег­ружен­ный интерфейс и пре­дель­но прос­та в работе.

mRemoteNG
mRemoteNG

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

Как видишь, тул­за весь­ма полез­на и поз­воля­ет исполь­зовать свои коман­ды в сце­нари­ях, что дела­ет ее еще более прак­тичной.

Netsh
Netsh

Все познается в сравнении

Q: Как мож­но срав­нить два фай­ла на сов­падение строк в двух стол­бцах и как срав­нить стро­ки на сов­падение в одном стол­бце?

A: Это доволь­но рас­простра­нен­ная задача, и в ее решении нуж­но исхо­дить из началь­ных дан­ных и их объ­ема. Ска­жем, для срав­нения двух стол­бцов в xls-фай­лах неболь­шого раз­мера дос­таточ­но будет прос­того редак­тора таб­лиц. Тот же Excel, LibreOffice или OpenOffice лег­ко спра­вят­ся с этой задачей. При срав­нении дан­ных в кон­соли подой­дет коман­да diff или comm. У них огромное количес­тво парамет­ров и спо­собов срав­нения двух стол­бцов. Кста­ти, если xls-файл име­ет объ­ем в гигабайт и выше, то здесь спа­сет толь­ко кон­соль. Самое прос­тое срав­нение — это что‑то похожее на

diff file1 file2
comm file1 file2

Слу­чай, ког­да нуж­но срав­нить стро­ки одно­го стол­бца, более инте­рес­ный. Вол­шебной коман­ды, которая бы это делала самос­тоятель­но, нет. Поэто­му мы напишем скрипт. Для прос­тоты понима­ния разобь­ем задачу на более мел­кие и решим их. Для начала нам нуж­но отсорти­ровать записи и уда­лить пов­торя­ющиеся, резуль­тат мы помес­тим во вре­мен­ный файл temp2. Так­же соз­дадим temp1, где будут хра­нить­ся прос­то сор­тирован­ные записи. Оста­ется срав­нить два фай­ла temp1 и temp2 на несо­ответс­твие и получить резуль­тиру­ющий файл. Оста­нет­ся толь­ко уда­лить вре­мен­ные фай­лы. Сам код:

#!/bin/bash
echo -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, что у нее есть полез­ного в выводе?

  1. Vmstat — одна из ути­лит, которые сле­дует прив­лечь в пер­вую оче­редь при проб­лемах с сер­вером, ска­жем высоком Load Average. Она поз­воля­ет вывес­ти информа­цию об исполь­зовании памяти, дис­ков, про­цес­сора. Прос­той запуск без клю­чей выведет таб­личку, раз­битую на шесть раз­делов: procs, memory, swap, io, system и cpu. В качес­тве парамет­ров запус­ка мож­но ука­зать вре­мя обновле­ния ста­тис­тики и количес­тво выводов. Ска­жем, коман­да vmstat 2 5 выведет дан­ные пять раз с интерва­лом в две секун­ды.
  2. Procs отоб­ража­ет дан­ные по про­цес­сам. r — количес­тво про­цес­сов в оче­реди на выпол­нение про­цес­сором, в слу­чае если зна­чение боль­ше 0 — явно наг­рузка на про­цес­сор. b — количес­тво про­цес­сов, ожи­дающих опе­раций I/O, если зна­чение боль­ше 0, зна­чит, наг­рузка на дис­ки и/или фай­ловую сис­тему. Memory — память. swpd — количес­тво бло­ков, переме­щен­ных в swap, free — сво­бод­ная память, но без уче­та памяти, занятой буфера­ми и кешем, в прин­ципе то же, что выводит free, buff — буферы памяти и cache — кеш.
  3. Swap — дан­ные по сво­пу. si (swap in) — количес­тво бло­ков в секун­ду, которое сис­тема счи­тыва­ет из раз­дела или фай­ла swap в память, so (swap out) — наобо­рот, количес­тво бло­ков в секун­ду, которое сис­тема переме­щает из памяти в swap. В иде­але, зна­чение обо­их стол­бцов дол­жны быть око­ло нуля или по край­ней мере не более десяти бло­ков в секун­ду. System — информа­ция о сис­теме. in (interrupts) — количес­тво пре­рыва­ний в секун­ду и cs (context switches) — количес­тво перек­лючений меж­ду задача­ми.
  4. CPU — как ты уже догадал­ся, про­цес­сор. us (user time) — про­цент вре­мени CPU, занятый на выпол­нение «поль­зователь­ских» (не при­над­лежащих ядру) задач, sy (system time) — про­цент вре­мени CPU, занятый на выпол­нение задач ядра (сеть, I/O задачи, пре­рыва­ния и про­чее), id (idle) — про­цент вре­мени в без­дей­ствии (ожи­дании задач), wa — про­цент вре­мени CPU, занятый на ожи­дание опе­раций I/O.
  5. По­мимо полез­ностей на экра­не, тул­за еще име­ет кучу раз­ных клю­чей, вот, к при­меру, некото­рые из них:
  • -s — изме­нение вида отоб­ражение резуль­татов (в две колон­ки);
  • -d — ста­тис­тика исполь­зования дис­ков;
  • -S [k | K | m | M] — с ука­зани­ем, в чем выводить информа­цию (килоби­ты, килобай­ты, мегаби­ты, мегабай­ты соот­ветс­твен­но).
 

Потянет или обвалится?

По­дой­дут ли домаш­ние Wi-Fi-роуте­ры для малого и сред­него офи­са?

+

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

-

Очень мно­гое зависит от количес­тва кли­ентов и их целей. Если это ноут­буки, которым нужен быс­трый ско­рос­тной интернет, для перего­воров с кли­ента­ми и, ска­жем, таких кли­ентов око­ло двад­цати, плюс еще мобиль­ные девай­сы, интернет‑радио, YouTube. Точ­ка обва­лит­ся мгно­вен­но, прос­то не хва­тит мощ­ностей. Устрой­ства, которые про­дают­ся для соз­дания кор­поратив­ных Wi-Fi-сетей, не зря сто­ят свои день­ги. Это и качес­тво, и мощ­ность, и, что самое глав­ное, надеж­ность.

Оставить мнение