Sep 1, 2011

Unix as IDE. Сетевые утилиты

netstat

Показывает сетевые соединения (входящие/исходящие), таблицу маршрутизации, статистику по сетевым интерфейсам и т.д.
netstat -at # Список всех открытых портов (TCP)
netstat -au # Список всех открытых портов (UDP)
netstat -nagrep 22 # Список открытых хостов по порту
netstat -lt # Список только прослушиваемых портов (TCP)
netstat -s # Статистика по всем открытым портам
# Подробное отображение списка с открытыми портами - добавлен PID и имя процессов
netstat -p 
# Команда для просмотра открытых TCP/UDP портов с именами процессов
# (может понадобиться root-доступ)
netstat -ltupn 
# Список подключенных хостов
netstat -lantp | grep ESTABLISHED |awk '{print $5}' | awk -F: '{print $1}' | sort -u

ss

Позволяет просматривать информацию об используемых сокетах в системе. Эта команда обладает схожим функционалом c netstat, но есть и уникальные возможности. Например возможность фильтровать вывод по установленным соединениям с определенным портом.
ss -p  # Список процессов, использующие соединения в данный момент
ss -l # Список сокетов в режиме прослушивания
 # Пример фильтра - список всех соединений к порту 80
ss -o state established '( dport = :www or sport = :www )'

lsof

Отображает процессы, которые работают с определенным файлом или сокетом.
lsof -i # Список всех сетевых соединений
lsof -i :80 # Список процессов, работающих с портом 80

netcat

Позволяет передавать/принимать данные через TCP/UDP соединения.
# Передача файла
nc -l 1234 > file # На принимающей стороне
nc localhost 1234 < file # На отправляющей стороне

# Или отдавать файл любому подключившемуся
nc -l 1234 < file # На передающей стороне
nc localhost 1234 > file # На принимающей стороне

nmap

Cканирует IP-сети с любым количеством объектов, определяет состояние объектов сканируемой сети (портов и соответствующих им служб).
Для работы большинства возможностей nmap требуется права root. Разработчики nmap предлагают хост scanme.nmap.org для тестового сканирования.
# Получение информации об портах удаленного хоста и определение операционной системы
sudo nmap -sS -P0 -sV -O scanme.nmap.org 
# scanme.nmap.org – сканируемый хост, может быть: IP, имя хоста или подсеть
# -sS – TCP SYN сканирование (полуоткрытое)
# -P0 – отключение ICMP сканирования
# -sV – определение сервисов, запущенных на открытых портах
# -O – определение версии операционной системы

# Пингование диапазона адресов
sudo nmap -sP -v "192.168.1.*" 
sudo nmap -sP -v 192.168.1.0/24
sudo nmap -sP -v 192.168.1.1-20
# -sP - ping-сканирование

sudo nmap -sT -p 22 scanme.nmap.org # Проверка одного порта
sudo nmap -sT -p 20-110 scanme.nmap.org # Проверка диапазона портов
# -sT - TCP-сканирование

sudo nmap -sS scanme.nmap.org -D 8.8.8.8 # Cкрыть свой IP адрес

nmap localhost # Определения открытых портов на локальной машине нужно выполнить

fuser

Принудительное закрытие определенного порта
fuser -k 80/tcp

DNS lookup

http://greendail.ru/node/474
dig  www.podkova.by  +trace

nslookup podkova.by
# or using google ns server
nslookup podkova.by 8.8.8.8

tshark

You can use the specific HTTP header display filters to show either just the request headers, just the response headers or both.
tshark tcp port 80 -V -R "http.request || http.response"

curl

curl \
  -s -u <USER>:<API_TOKEN> \
  -d '{ "id": "ce9d27f8", "method": "getContact", "params": [77777] }' \
  https://app01.nutshell.com/api/v1/json | python -m json.tool

# with Headers
curl -H 'Authorization: OAuth <SECURE_TOKEN>' https://blabla.com/api/?var=foo

# GET request (-G) with data (-d)
curl -G \
  -d 'access_token=77777777777777777777' \
  -d 'page=1' \ 
  -d 'per_page=1' \
  https://api.nimble.com/api/v1/contacts/list
How to test request to django-tastypie API using ApiKey:
curl \
  -H 'Authorization: ApiKey someusername:83a82c7941f6dba06510541c71505c71a0625741' \
  -H 'Content-Type:application/json' \
  -X PATCH -d '{"first_name" : "bob","last_name" : "marley"}' \
  http://127.0.0.1:8000/api/profile/

No comments: