================================================================================
# Терминал: SSH, Сеть, Передача файлов
================================================================================
================================================================================
# SSH соединение
================================================================================
ssh login@176.57.210.37 - подключение к серверу с логином (запрос пароля)
ssh login@domain.ru - подключение с использованием домена
ssh -p 2200 root@178.154.84 - подключение с указанием порта
# Работа с сетью:
whois site.ru — получение информации о сайте с помощью сервиса whois
host site.ru — получение информации о DNS сайта
host -a site.ru — получение расширенную инфу о DNS сайта
================================================================================
# CURL - инструмент для передачи данных с сервера или на него,
может использоваться большой список протоколов
================================================================================
# Варианты применения:
- доступ без браузера;
- внутри shell-скриптов;
- для тестирования API.
# Запрос страницы (получим исходный код страницы)
curl www.google.com - Вывод в консль
curl www.google.com > file.html - Сохранить код в файл
# Получение заголовков HTTP
curl -I https://www.google.com
# Скачать и сохранить файл под оригинальным именем file.tar.gz
curl -O https://testdomain.com/file.tar.gz
# Скачать и сохранить файл под новым именем download_file.tar.gz
curl -o download_file.tar.gz https://testdomain.com/file.tar.gz
# Скачать несколько файлов одной командой (последовательное выполнение ";")
curl -O https://testdomain.com/testfile.tar.gz ; curl -O https://testdomain.com/testfile2.tar.gz
# Использользование Авторизации:
curl -u <user:password> https://my-test-api.com/endpoint1
# Отправка POST-запросов:
- POST-запрос в виде строки:
curl --data "param1=test1¶m2=test2" http://test.com
- POST-запрос в JSON-формате:
curl -H 'Content-Type: application/json' --data '{"param1":"test1","param2":"test2"}' http://www.test.com
# Указание Типа запроса:
curl -X 'PUT' -d '{"param1":"test1","param2":"test3"}' \http://test.com/1
# Измерение продолжительности соединения (для определения времени загрузки или скачивания)
curl -w "%{time_total}\n" -o /dev/null -s www.test.com
# Игнорирование ошибки неправильных или самоподписанных сертификатов
curl -k https://localhost/my_test_endpoin
================================================================================
# WGET - загрузка файлов по сети
================================================================================
wget -i ФАЙЛ - Загрузка всех URL, указанных в локальном или внешнем ФАЙЛЕ
wget --progress=bar https://www.site.ru/backup/file.tar.gz - скачать файл c сайта (показать статус загрузки)
wget --no-check-certificate http://example.org/file.iso - скачать без проверки сертификата
wget -P /path/for/save ftp://ftp.example.org/some_file.iso - скачать в указанный каталог (-P)
# Вывести содержимое ответа в консоль (удобно для анализа редиректов на сайте)
wget http://site.ru
wget http://example.org --quiet -O -
# Скачать с использованием пароля (FTP / HTTP)
wget ftp://login:password@ftp.example.org/some_file.iso - вариант 1
wget --user=login --password=password ftp://ftp.example.org/some_file.iso - вариант 2
# Скачать весь сайт целиком (глубина рекурсии - 10)
wget -r -l 10 -k -o log-file.txt -p http://example.org/
-r, --recursive включение рекурсивной загрузки
-l, --level=ЧИСЛО глубина рекурсии (inf и 0 - бесконечность)
-k, --convert-links делать ссылки локальными в загруженном HTML или CSS
-o, --output-file=ФАЙЛ записывать сообщения (логи) в ФАЙЛ
-p, --page-requisites загрузить все изображения и проч., необходимые для отображения HTML-страницы
-m, --mirror короткий параметр, эквивалентный -N -r -l inf --no-remove-listing.
================================================================================
# RSYNC - Синхронизация фалов
может копировать или отображать содержимое каталога и копировать файлы,
опционально используя сжатие и рекурсию.
================================================================================
# Копирование текущего каталога: /upload/ (нужно перейти в этот каталог)
на удаленный сервер в аналогичный каталог: /var/www/vhosts/site.ru/upload/
rsync -e 'ssh -p22' -aH --delete --exclude="CACHE/*" --progress -lzuogthvr --compress-level=9 ./ admin_ftp@89.253.222.122:/var/www/vhosts/site.ru/upload/
admin_ftp@89.253.222.124 - логин (доступ) и host сервера, на который копируем
- После вставки команды в консоль система спросит пароль на сервер, на который делается копирование
(вставляем пароль, дальше идет копирование с выводом списка файлов на экран)
---------------------------------------------------------------------------------
Примеры:
---------------------------------------------------------------------------------
# Копирование из локального каталога в удалённый.
rsync -arv local/directory user@remote.server.address:/remote/directory/
# Копирование из удалённого каталога в локальный.
rsync -arv user@remote.server.address:/remote/data local/directory/
# Показать прогресс в процентах для каждого файла.
rsync -arv --progress user@remote.server.address:/remote/data local/directory/
# Удалить файлы в каталоге назначения, если в каталоге-источнике больше таких файлов нет.
rsync -arv --delete user@remote.server.address:/remote/data local/directory/
# Исключить все файлы с расширением .jpg и .png.
rsync -arv --exclude={"*.jpg", "*.png"} user@remote.server.address:/remote/data local/directory/
================================================================================
# SCP - утилита и протокол копирования файлов между компьютерами,
в качестве транспорта используется SSH
================================================================================
Общая идея: csp [-P порт] <откуда> <куда>
Пути к каталогам могут не быть как можно предположить из видимой структуры файлов
в среде разработки или файловом менеджере, по этой причине могут появляться ошибки типа:
is not a directory. Реальный адрес (относительно корня сервера) можно узнать через команду pwd
Аналогично можно копировать каталоги целиком не архивируя:
Скопировать всё содержимое папки на сервере (рекурсивно) в локальную папку (с подробным выводом):
scp -r root@server.my:/home/dir/ /home/local/my/
# Копирование файла с удаленного сервера в текущий каталог
scp root@31.193.195.61:/backup/www/2014-08-01/site.tar.gz site.tar.gz
- С указанием порта:
scp -P 2200 root@31.193.195.61:/backup/www/2014-08-01/site.tar.gz site.tar.gz
# Копирование между серверами:
scp -r root@server1.my:/home/dir/ root@server2.my:/home/dir/
# Дополнительные флаги:
-r - рекурсивное копирование (для директорий)
-C - использовать сжатие при передачи
-P - порт ssh
-p - сохранить информацию о времени создания, модификации файла.
================================================================================
# NetCat
================================================================================
netcat -z -v site.ru 1-1000 - Сканирование портов по домену
netcat -z -n -v 175.55.210.36 1-1000 - Сканирование портов по IP