Скрытность в Linux /заметаем следы/
  • Узнать публичный IP адрес из командной строки
  • Тест скорости интернет соединения из командной строки
  • Просмотреть конфигурационный файл без комментариев
  • Генерируем Случайные Пароли из Командной Строки
  • Найти IP Адреса в Файле с Помощью Grep
  • Найти Email Адреса в Файле с Помощью Grep
  • Построчно Прочитать Файл
  • Проверяем доступность сайта (curl,telnet)
  • Проверяем Время Ответа Сайта из Командной строки

Узнать Публичный IP адрес из командной строки

Легко Запоминающиеся Сервисы

Получить внешний IP адрес, использую команду curl :
$ curl ifconfig.me
$ curl ip.appspot.com
$ curl icanhazip.com
Получить внешний IP адрес, использую команду wget :
$ wget -q -O — ifconfig.me
$ wget -q -O — ip.appspot.com
$ wget -q -O — icanhazip.com

Узнать Внешний IP адрес с помощью DynDNS.org

1. Используя утилиту wget :

$ wget -q -O — checkip.dyndns.org | sed -e ‘s/.*Current IP Address: //’ -e ‘s/<.*$//’

2. Используя утилиту curl :

$ curl -s checkip.dyndns.org | sed -e ‘s/.*Current IP Address: //’ -e ‘s/<.*$//’

3. Используя утилиту lynx :

$ lynx -dump checkip.dyndns.org | sed -e ‘s/.*Current IP Address: //’ -e ‘s/<.*$//’ | sed ‘/^$/d’

Проверка Скорости Загрузки из Интернета в командной строке

Используйте следующую команду, чтобы узнать скорость интернета (download и upload) из командной строки в Linux :

$ wget -O - https://raw.github.com/sivel/speedtest-cli/master/speedtest_cli.py | python

Пример результата выполнения команды :

Retrieving speedtest.net configuration...
Retrieving speedtest.net server list...
Testing from ******* (xxx.xxx.xxx.xxx)...
Selecting best server based on latency...
Hosted by ******* [1.24 km]: 2.458 ms
Testing download speed...
Download: 84.35 Mbits/s
Testing upload speed...
Upload: 77.32 Mbits/s

Тест Скорости Интернета из Командной Строки в Linux

Если вы планируете часто измерять пропускную способность Интернет-канала, тогда вы можете установить скрипт speedtest :

$ wget https://raw.github.com/sivel/speedtest-cli/master/speedtest_cli.py
$ chmod a+rx speedtest_cli.py
$ sudo mv speedtest_cli.py /usr/local/bin/speedtest
$ sudo chown root:root /usr/local/bin/speedtest

После установки, вы получите возможность проверять скорость Интернета из терминала, с помощью команды speedtest :

$ speedtest
Retrieving speedtest.net configuration...
Retrieving speedtest.net server list...
Testing from ******* (xxx.xxx.xxx.xxx)...
Selecting best server based on latency...
Hosted by ******* [1.24 km]: 2.458 ms
Testing download speed...
Download: 84.35 Mbits/s
Testing upload speed...
Upload: 77.32 Mbits/s

Делимся Результатами Теста Скорости Через Speedtest.net

Если вы хотите поделиться результатами теста скорости, выполните speedtest с ключом —share :

$ speedtest --share
Share results: http://www.speedtest.net/result/3690948322.png

Получаем Список Доступных Серверов Speedtest.net

Выполните следующую команду для получения списка всех доступных по всему миру серверов Speedtest.net :

$ speedtest --list | more
Retrieving speedtest.net configuration...
Retrieving speedtest.net server list...
3464) Vodafone España (Alicante, Spain) [3047.78 km]
 804) ServiHosting Networks (Elda, Spain) [3063.22 km]
4845) du (Dubai, United Arab Emirates) [3069.72 km]
4844) Etisalat (Dubai, United Arab Emirates) [3069.72 km]

Меряем Скорость Сети до Определенного Сервера

Во время тестирования скорости, вы сами можете выбрать ID сервера до которого будет производиться измерение скорости, вместо географически наиболее близкого сервера.

Померяем скорость Интернет-канала до «1746) Vodafone DE (Frankfurt, Germany) [1937.90 km]» :

$ speedtest --server 1746

Просмотреть Конфигурационный Файл Без Комментариев

С помощью команды ‘grep’, можно довольно просто отобразить активные настройки конфигурационного файла, опуская комментарии.

Следующая команда выводит содержимое файла ‘somefile.conf’, без пустых строк и строк начинающихся с «#» :
$ grep ^[^#] somefile.conf

Также, с помощью пайпа, можно перенаправить вывод в новый файл :
$ grep ^[^#] somefile.conf > newfile.conf
Добавив алиас ‘clean config’, можно значительно облегчить процесс фильтрации :
$ alias cf=’grep ^[^#]’
Используется алиас следующим образом :
$ cf /etc/ntp.conf
driftfile /var/lib/ntp/drift
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict -6 ::1
server 0.centos.pool.ntp.org
server 1.centos.pool.ntp.org
server 2.centos.pool.ntp.org
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys

Генерируем Случайные Пароли из Командной Строки в Линуксе

Вы можете использовать следующую команду для генерации случайного пароля из командной строки :
$ tr -dc A-Za-z0-9 < /dev/urandom | head -c 8 | xargs
Пример пароля :
4fFUND1d

Также, Вы можете создать следующую баш функцию (добавьте в Ваш ~/.bashrc) :

# Генератор случайных паролей
genpasswd() {
tr -dc A-Za-z0-9 < /dev/urandom | head -c ${1:-8} | xargs}

Перезагрузите .bashrc :
$ . ~/.bashrc
Теперь используйте genpasswd для генерации случайных паролей :
$ genpasswd
vmuWt7TS
$ genpasswd 10
ymkIgxcdCh
$ genpasswd 16
wQnqgdc5tAQoiBdf

Найти IP Адреса в Файле с Помощью Grep

Ниже представлены регулярные выражения, которые помогут найти и напечатать все IP адреса из файла.

Данные регулярные выражения соответствуют шаблонам IPv4 адресов.

IP адреса, соответствующие регулярным выражения, могут быть извлечены из файла с помощью команды grep.

В данной заметке Вы найдете как сами регулярные выражения, так и примеры того, как найти и извлечь все IP адреса из файла с помощью команды grep.

Регулярное Выражение для Поиска IP Адресов

Паттерн для поиска IPv4 адресов (этот паттерн соответствует всем значениям от 0.0.0.0 to 999.999.999.999 и в большинстве случаев этого бывает достаточно).

«([0-9]{1,3}[\.]){3}[0-9]{1,3}»

Найти Все IP Адреса с Помощью Grep

Пропарсим файл и найдем в нем все IP адреса из диапазона от 0.0.0.0 до 999.999.999.999 с помощью grep :
$ grep -E -o «([0-9]{1,3}[\.]){3}[0-9]{1,3}» file.txt
Это довольно простое регулярное выражения, но Вы должны понимать что далеко не все его значения являются правильными IP адресами с технической точки зрения.

Далее мы рассмотрим паттерн, под который попадают исключительно правильные IP адреса.

Поиск Правильных IPv4 Адресов

Регулярное выражение для поиска и проверки правильных IPv4 адресов :

«(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)»

Извелечь Только Валидные IP Адреса

Находим только правильные IP адреса с помощью grep :
$ grep -E -o «(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)» file.txt

ОпцияОписание
-E, —extended-regexpИспользовать расширенное регулярное выражение
-o, —only-matchingПечать только IP адресов

Пропускайте опцию -o, если Вы хотите вывести не только IP адреса, но и сами строки в которых они содержатся.

Найти Email Адреса в Файле с Помощью Grep

Ниже Вы найдете регулярное выражение, который поможет проверить валидность и извлечь все подходящие email адреса из файла.

Это регулярное выражение подходит для 99% использующихся в наши дни email адресов.

В этой статье Вы найдете само регулярное выражение соответствующее email адресу, и пример того, как извлечь из файла соответствующие паттерну почтовые ящики с помощью команды grep.

Регулярное Выражение для Email Адресов

Используйте следующее регулярное выражение, чтобы найти и проверить валидность email адресов :
«\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b»

Найти Все Email Адреса с Помощью Grep

Выполните следующую команду, чтобы извлечь список всех почтовый ящиков из файла :
$ grep -E -o «\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b» file.txt

ОпцияОписание
-E, —extended-regexpИспользовать расширенное регулярное выражение
-o, —only-matchingПечать только самих email адресов

Построчно Прочитать Файл

C помощью цикла while можно построчно прочитать файл, выполняя какое-либо действие с каждой его строкой.

Синтаксис

while read line; do [КОМАНДА]; done < [ВХОДНОЙ_ФАЙЛ]

Пример в Одну Строку

Следующая команда напечатает файл ‘file.txt’ построчно.

while read line; do echo "$line"; done < file.txt

BASH Скрипт

Следующий скрипт напечатает файл построчно, добавив «This is a line :» в начале каждой строки :

#!/bin/bash
FILE=$1
while read line; do
     echo "This is a line : $line"
done < $FILE

Сохраните и выполните скрипт :
chmod +x script.sh
./script.sh /etc/passwd
This is a line : root:x:0:0:root:/root:/bin/bash
This is a line : bin:x:1:1:bin:/bin:/sbin/nologin
This is a line : daemon:x:2:2:daemon:/sbin:/sbin/nologin
***

Проверяем Доступность Сайта из Командной Строки

Проверяем доступность сайта с помощью CURL

Выполните следующую команду для проверки доступности сайта и получения сообщения со статусом от сервера :
$ curl -Is http://xakinfo.ru | head -1
HTTP/1.1 200 OK
Статус код ‘200 OK’ означает что запрос был успешно выполнен и сайт доступен.

 

Так же с помощью curl можно проверить доступность отдельной страницы на сайте, например :
$ curl -Is https://xakinfo.ru/2016/11/%d0%ba%d0%b0%d0%ba-%d1%81%d0%be%d0%b7%d0%b4%d0%b0%d1%82%d1%8c-%d0%bf%d0%be%d0%bb%d1%8c%d0%b7%d0%be%d0%b2%d0%b0%d1%82%d0%b5%d0%bb%d1%8f-%d1%81-%d0%bf%d1%80%d0%b0%d0%b2%d0%b0%d0%bc%d0%b8-root-%d0%b2-l/ | head -n 1
HTTP/1.1 200 OK
Читайте: Коды Состояния HTTP

Проверяем доступность сайта с помощью TELNET

Вы так же можете проверить доступность сайта и получить сообщения со статусом от сервера с помощью команды telnet :
$ telnet www.shellhacks.com 80
Trying 91.206.200.119…
Connected to www.shellhacks.com.
Escape character is ‘^]’.
HEAD / HTTP/1.0
HOST: xakinfo.ru
<НАЖМИТЕ ENTER>
<НАЖМИТЕ ENTER>

Вы получите вывод вроде этого :
HTTP/1.1 200 OK
Server: nginx/1.1.10
Date: Mon, 28 Nov 2016 19:29:46 GMT
***
Который так же означает что с сайтом все ОК.

Проверяем Время Ответа Сайта из Командной строки

Узнайте скорость отклика сайта из командной строки Linux с помощью CURL.

Суммарное время ответа сайта

Используйте следующую команду, чтобы узнать скорость ответа сайта, в секундах.
$ curl -s -w %{time_total}\\n -o /dev/null https://xakinfo.ru
Пример выполненной команды :

0,675

Краткое описание опций :

ОпцииОписание
-sТихий режим. Не показывать индикатора выполнения или сообщений об ошибках
-wОпределяет, что отображается на стандартный вывод после завершенной и успешной операции
-oПеренаправляет вывод в ‘/dev/null’
time_totalСуммарное время, которое заняла операция, в секундах

Подробный отчет о времени отклика сайта

Следующая команда возвращает нам lookup, connect, pretransfer, starttransferвремя в секундах, а так же суммарное время которое ушло на операцию.
$ curl -s -w ‘\nLookup time:\t%{time_namelookup}\nConnect time:\t%{time_connect}\nPreXfer time:\t%{time_pretransfer}\nStartXfer time:\t%{time_starttransfer}\n\nTotal time:\t%{time_total}\n’ -o /dev/null https://xakinfo.ru

Пример выполнения команды :

Lookup time: 0,040
Connect time: 0,066
PreXfer time: 0,351
StartXfer time: 0,434

Total time: 0,484

Краткое описание опций :

ОпцииОписание
Lookup time (time_namelookup)Время, в секундах, затраченное на преобразование доменного имени в IP адрес
Connect time (time_connect)Время, в секундах, затраченное на подключение к удаленному серверу по TCP
PreXfer time (time_pretransfer)Время, в секундах, затраченное на подготовку к обмену данными. Оно включает в себя время на ‘обмен рукопожатиями’ участников конкретного протокола.
StartXfer time (time_starttransfer)Время, в секундах, затраченное на все действия, вплоть до начала передачи первого байта данных. Оно включает в себя ‘time_pretransfer’, а так же время, необходимое серверу на подсчет результатов.

Более подробный отчет о времени отклика сайта

Следующая команда добавляет данные о времени, затраченном на appconnect и redirect. Эти опции работают только в последних версиях CURL.

$ curl -s -w ‘\nLookup time:\t%{time_namelookup}\nConnect time:\t%{time_connect}\nAppCon time:\t%{time_appconnect}\nRedirect time:\t%{time_redirect}\nPreXfer time:\t%{time_pretransfer}\nStartXfer time:\t%{time_starttransfer}\n\nTotal time:\t%{time_total}\n’ -o /dev/null https://xakinfo.ru

Пример выполненной команды :

Lookup time: 0,002
Connect time: 0,036
AppCon time: 0,537
Redirect time: 0,000
PreXfer time: 0,537
StartXfer time: 0,626

Total time: 0,670

Краткое описание опций :

ОпцииОписание
AppCon time (time_appconnect)Время, в секундах, с начала замера, до завершения соединения/рукопожатия по протоколу SSL/SSH и пр. с удаленным хостом (Добавлено в 7.19.0)
Redirect time (time_redirect)Время, в секундах, затраченное на редиректы, включая name lookup, connect, pretransfer и transfer. ‘time_redirect’ показывает суммарное время всех редиректов. (Добавлено в 7.12.3)

Используйте —version, чтобы узнать версию CURL.
$ curl —version

Время Отклика : 3 Важных Лимита

Небольшая заметка для информации.

  • 0.1 сек. — это время, за которое пользователь ощутит что система реагирует мгновенно, а это означает что никакой обратной связи, за исключением отображения результата, не требуется;
  • 1.0 сек. — это время, в течении которого поток мыслей пользователя остается непрерывным, даже если он и заметит задержку. Как правило, никакой обратной связи не требуется во время задержки более 0.1 но менее 1.0 секунды, однако пользователь теряет ощущение непосредственной работы с данными;
  • 10 сек. — это практически предел удерживания внимания пользователя на диалоге. Во время более длительных задержек, у пользователя возникнет желание заняться другими вещами, пока загрузка страницы не закончится. Поэтому возникает необходимость в организации обратной связи, которая будет показывать что все в порядке и операция выполняется. Обратная связь особенно важна если время задержки варьирует, так как пользователь не будет знать чего ожидать.