Документы для веб-разработчиков

================================================================================ # Терминал: 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&param2=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