Table of Contents
Быстрые заметки по Linux
Посчитать количество элементов (ip адреса из F2B) в длинной строке, элементы разделены проблелом.
@aee4:~/awk-test-area$ cat in-list | jq -Rc 'split(" ")' | jq length 920
Подрезать строку
От ip адреса надо отрезать маску.
Задаём разделитель в виде слеша и печатаем первое или второе значение.
$ echo "8.1.2.2/32" | cut -f1 -d"/" 8.1.2.2 $ echo "8.1.2.2/32" | cut -f2 -d"/" 32
“Откусть” три символа справа.
Единица это какое-то смещение.
$ echo "8.1.2.2/32" | awk '{print substr($0, 1, length($0)-3)}' 8.1.2.2
Генерим трафик через ssh
root@slv-iperf801:~# pv --rate-limit 10024M </dev/zero | ssh root@10.133.20.191 'cat >/dev/null'
Single mode
wget http://bks4-speedtest-1.tele2.net/10GB.zip
Посмотреть файлы связанные с пакетами
yum install yum-utils repoquery --installed -l zabbix-proxy
htpasswd
Добавить пользователя в существующий файл, интерактивно задать пароль.
root@fnm12:/etc/nginx# htpasswd .htpasswd test-user1
Удалить пользователя из существующего файла.
root@fnm12:/etc/nginx# htpasswd -D .htpasswd test-user1
Добавить пользователя в существующий файл, интерактивно задать SHA пароль.
root@fnm12:/etc/nginx# htpasswd -s .htpasswd test-user1
Посмотреть тип оперативой памяти
dmidecode --type 17
Кнопка меню на ноуте, правая кнопка мыши
На моём текущем ноуте нет кнопки меню под правой рукой, замена - Shift+F10
IKEv1 vs IKEv2
Узнать mime-type у файла
$ file --mime-type openvpn_stunnel_guide.pdf openvpn_stunnel_guide.pdf: application/pdf
https://stackoverflow.com/questions/2227182/how-can-i-find-out-a-files-mime-type-content-type
Репозиторий для Centos6 EOL
https://www.getpagespeed.com/server-setup/how-to-fix-yum-after-centos-6-went-eol
Переписать базовые репозитории.
# cat <<-'EOF' > /etc/yum.repos.d/CentOS-Base.repo [C6.10-base] name=CentOS-6.10 - Base baseurl=http://vault.epel.cloud/6.10/os/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 enabled=1 metadata_expire=never [C6.10-updates] name=CentOS-6.10 - Updates baseurl=http://vault.epel.cloud/6.10/updates/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 enabled=1 metadata_expire=never [C6.10-extras] name=CentOS-6.10 - Extras baseurl=http://vault.epel.cloud/6.10/extras/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 enabled=1 metadata_expire=never [C6.10-contrib] name=CentOS-6.10 - Contrib baseurl=http://vault.epel.cloud/6.10/contrib/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 enabled=0 metadata_expire=never [C6.10-centosplus] name=CentOS-6.10 - CentOSPlus baseurl=http://vault.epel.cloud/6.10/centosplus/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 enabled=0 metadata_expire=never EOF
ftp
Номер порта, который сервер предлагает для пассивного режима.
“FTP: 227 Entering Passive Mode (10,11,0,60,206,56)”
Номер порта = 206*256 + 56 = 52792
systemctl
Посмотреть список всех сервисов
# systemctl list-unit-files | less
Посмотреть список запущенных сервисов.
# systemctl | grep running
dig
Спросить версию bind.
# dig @x.x.x.x -t txt -c chaos VERSION.BIND ... ;; ANSWER SECTION: VERSION.BIND. 0 CH TXT "9.16.1-Ubuntu" ...
Чтобы скрыть версию bind, в “options” надо добавить “version “NA”;”.
arp
Задать статическую arp запись.
arp -s 10.11.50.4 00:1d:d8:bb:24:27
Удалить статическую arp запись.
arp -d 10.11.50.4
iftop
Запустить iftop для конкретного ip-адреса\сети.
iftop -F 141.101.xxx.xxx/32
Чтобы показать номера портов, надо при уже запущенном iftop нажать “p”.
Старые и новые команды
SWAP File
Подключаем swap в виде файла.
Создаем файл /swap размером 1Гбайт.
root@leela:~# dd if=/dev/zero of=/swap bs=1024 count=1000000
Задаем права на файл.
root@leela:~# chmod 0600 /swap
Сделал из файла swap-файл.
root@leela:~# mkswap /swap
Включаем swap.
root@leela:~# swapon /swap root@leela:~# swapon --show NAME TYPE SIZE USED PRIO /swap file 976.6M 0B -2
В файл /etc/fstab добавляем строчу.
/swap none swap sw 0 0
Если нужно, то можно завести несколько свап-файлов\разделов.
Например, был свап-раздел созданный при установки ОС и захотелось добавить свапа в виде файла.
root@aee4:~# cat /etc/fstab ... /dev/mapper/vgubuntu-swap_1 none swap sw 0 0 /swap none swap sw 0 0
oot@aee4:~# swapon --show NAME TYPE SIZE USED PRIO /swap file 1,9G 0B -2 /dev/dm-2 partition 980M 0B -3
Дата установки ОС
# rpm -qi basesystem Name : basesystem Version : 10.0 Release : 7.el7.centos Architecture: noarch Install Date: Пт 15 июн 2018 13:57:36 ...
Nginx
403 на запросы по ip и на url за которые nginx не отвечает
[root@nginx1 ~]# cat /etc/nginx/conf.d/02-server-by-ip.conf server { listen 80; server_name ""; # return 444; return 403; }
Более приятных для глаз формат логов
Подсмотрено на https://debian.pro в большом мануале.
[root@nginx2 conf.d]# cat 03-access-log-format.conf log_format lamp '[$time_local] $http_host $remote_addr "$request" $status "$http_referer" "$http_user_agent" $request_time $upstream_cache_status $bytes_sent ($upstream_addr:$upstream_status:$upstream_response_time)'; access_log /var/log/nginx/access.log lamp;
Размер файла который можно через nginx отправить на сервер
На dokiwiki не закачивались большие файлы, хотя тип файлов был в разрешенных.
Выяснилось, что это nginx зарубал с ошибкой “ *83 client intended to send too large body: 1609736 bytes,”.
В nginx.conf в секцию http добавляем строчку “client_max_body_size 5M;” и перезапускаем сервер.
https://devanswers.co/nginx-error-client-intended-send-large-body/
Centos8 first steps
ifconfig ens192 10.12.2.50/22 route add default gw 10.12.0.1 echo nameserver 1.1.1.1 > /etc/resolv.conf yum install network-scripts vi /etc/sysconfig/network-scripts/ systemctl stop NetworkManager systemctl disable NetworkManager systemctl mask NetworkManager systemctl start networks systemctl status network systemctl enable network reboot
iptables
Путь пакета по таблицам и цепям - https://i.stack.imgur.com/MkqJb.gif
ifconfig
Дать адрес и поднять интерфейс руками.
ifconfig eth0 192.168.0.10 netmask 255.255.255.0 up
Актуально для Centos8 где по дефолту нет пакета network-scripts и возможности задавать настройки в /etc/sysconfig/network-scripts/ifcfg-eth0.
Arpwatch
Ставится из репозитория.
/etc/sysconfig/arpwatch - файл настройки.
[root@noc333 postfix]# cat /etc/sysconfig/arpwatch # -u <username> : defines with what user id arpwatch should run # -e <email> : the <email> where to send the reports # -s <from> : the <from>-address #OPTIONS="-u arpwatch -e root -s 'root (Arpwatch)'" #OPTIONS="-i eth0 -n 1.1.152.0/24 -n 1.1.153.0/24 -n 1.1.74.0/24 -u arpwatch -e root -s 'root (Arpwatch)'" OPTIONS="-i eth0 -n 1.1.152.0/24 -n 1.1.153.0/24 -n 1.1.74.0/24 -u arpwatch -e some@email.address,onemore@email.adsress -s 'root'"
Что бы складывать логи в отдельный файл, добавляем правило в rsyslog.
#### CUSTOM RULES #### #if $msg contains 'arpwatch' then /var/log/arpwatch.log if $programname == 'arpwatch' then /var/log/arpwatch.log & ~ #### /CUSTOM RULES ####
Данные arpwatch складывает и хранит в /var/lib/arpwatch.
Fail2Ban
Ставится из репозитория.
/etc/fail2ban/jail.conf - основной файл настройки.
/etc/fail2ban/jail.d/sshd.conf - файл настройки который переписывает или дополняет основной.
[root@noc333 ~]# cat /etc/fail2ban/jail.d/sshd.conf [sshd] enabled = true port = 31472 bantime = 43430 findtime = 100 maxretry = 4 ignoreip = 1.1.1.1 2.2.2.2
Посмотреть статистику.
[root@noc333 ~]# fail2ban-client status sshd Status for the jail: sshd |- Filter | |- Currently failed: 0 | |- Total failed: 4 | `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd `- Actions |- Currently banned: 0 |- Total banned: 1 `- Banned IP list:
Разбанить
[root@noc333 ~]# fail2ban-client set sshd unbanip 1.1.1.1
Вернуть iptables В Centos7 по дефолту fail2ban использует firewalld, при установке fail2ban в jail.d запишется файл 00-firewalld.conf.
[root@wiki1 jail.d]# pwd /etc/fail2ban/jail.d [root@wiki1 jail.d]# cat 00-firewalld.conf # This file is part of the fail2ban-firewalld package to configure the use of # the firewalld actions as the default actions. You can remove this package # (along with the empty fail2ban meta-package) if you do not use firewalld [DEFAULT] banaction = firewallcmd-rich-rules[actiontype=<multiport>] banaction_allports = firewallcmd-rich-rules[actiontype=<allports>]
Что бы переключиться на iptables, надо файл 00-firewalld.conf переименовать в 00-firewalld.conf.off и перезапустить fail2ban.
Посмотреть серийный номер диска
udevadm info --query=all --name=/dev/sda | grep SER
Копирование по scp через промежуточный сервер
Есть такая схема:
server1 → ssh_port_333 → server2 → ssh_port_22 → server3
Надо скопировать файл vmx-bundle-19.3R2.9.tgz с server1 на server3.
Для этого на server1 даемс следующую команду:
[root@server1 ~]#scp -o ProxyCommand="ssh -p333 -W %h:%p root@server2" vmx-bundle-19.3R2.9.tgz root@server3:/root
После этого сначала спросит пароль от server2, а потом от server3.
База RIPE NCC
Запросы к истории
Посмотреть количество изменений и их номера.
jwhois -h whois.ripe.net -- --list-versions ASxxx [Querying whois.ripe.net] [whois.ripe.net] % This is the RIPE Database query service. % The objects are in RPSL format. % % The RIPE Database is subject to Terms and Conditions. % See http://www.ripe.net/db/support/db-terms-conditions.pdf % Version history for AUT-NUM object "ASxxx" % You can use "--show-version rev#" to get an exact version of the object. rev# Date Op. 1 2012-05-08 13:20 ADD/UPD 2 2012-05-17 13:30 ADD/UPD 3 2012-07-18 10:52 ADD/UPD 4 2014-05-27 14:34 ADD/UPD 5 2014-07-22 06:01 ADD/UPD 6 2015-03-10 13:58 ADD/UPD 7 2015-05-05 06:27 ADD/UPD
Посмотреть какую-то конкретрную версию объекта.
jwhois -h whois.ripe.net -- --show-version 3 ASxxx [Querying whois.ripe.net] [whois.ripe.net] % This is the RIPE Database query service. % The objects are in RPSL format. % % The RIPE Database is subject to Terms and Conditions. % See http://www.ripe.net/db/support/db-terms-conditions.pdf % Version 3 of object "ASxxx" % This version was a UPDATE operation on 2012-07-18 10:52 % You can use "--list-versions" to get a list of versions for an object. aut-num: ASxxx ...
Посмотреть различия между версиями
jwhois -h whois.ripe.net -- --diff-versions 1:3 ASxxx [Querying whois.ripe.net] [whois.ripe.net] % This is the RIPE Database query service. % The objects are in RPSL format. % % The RIPE Database is subject to Terms and Conditions. % See http://www.ripe.net/db/support/db-terms-conditions.pdf % Difference between version 1 and 3 of object "ASxxx" @@ -10,3 +10,5 @@ mnt-by: SOME-MNT +mnt-by: New-mnt ...
Whois для доменов *.by
:~$ jwhois -h whois.cctld.by microsoft.by [Querying whois.cctld.by] [whois.cctld.by] Domain Name: microsoft.by Registrar: Open Contact, Ltd Org: Microsoft Corporation Country: US Address: 98052, WA, Redmond, One Microsoft Way Registration or other identification number: - Phone: +1.2083895740 Email: HIDDEN! Details are available at http://www.cctld.by/whois/ Name Server: ns1.msft.net Name Server: ns2.msft.net Name Server: ns3.msft.net Name Server: ns4.msft.net Updated Date: 2019-03-01 Creation Date: 2007-02-01 Expiration Date: 2020-03-27 ------------------------------------------- Service provided by Reliable Software, Ltd.
Посмотреть внешний адрес из консоли
curl https://ipecho.net/plain
curl https://ipinfo.io/ip
Удалить пользователя и все связанные с ним файлы
userdel -r test-proxyuser
MariaDB
Репозитории MariaDB
hostname
В Debian имя сервера пишется в /etc/hostname.
Команда ll
Centos приучил, что команда ll есть, а Debian дал понять, что на самом деле её нет
Команда ll это алиас к ls -l.
Алиасы прописываются в файле .bashrc
root@python:~# cat .bashrc # ~/.bashrc: executed by bash(1) for non-login shells. ... # alias ls='ls $LS_OPTIONS' alias ll='ls $LS_OPTIONS -l' # alias l='ls $LS_OPTIONS -lA' # # Some more alias to avoid making mistakes: # alias rm='rm -i' # alias cp='cp -i' # alias mv='mv -i' ...
Конвертация pdf в картинку
Ставим пакет imagemagick:
# apt-get install imagemagick
Далее конвертим:
04:41 $ convert -density 300 task1_bgp_20170910.pdf -quality 90 task1_bgp_20170910.png
Посмотреть как сделать белый фон.
Вывести построчно файл начиная с конца
Есть файл topic-list.
kostya@aee3:~$ cat topic-list * [[topic:srx-security-policy_logging|Логирование информации о проходящем через Juniper SRX трафике.]] * [[topic:srx_port_morror|Настройка port-mi * [[topic:junos_root_pass_reset|Сброс пароля root на Juniper SRX.]] * [[topic:linux_repare_nagios_db|Ремонт mysql базы nagios.]] * [[topic:zbx_disable_guest_user|Отключение пользователя guest в Zabbix.]]
Надо этот файл вывести построчно задом наперед, для этого есть команда tac (зеркальное cat).
kostya@aee3:~$ tac topic-list * [[topic:zbx_disable_guest_user|Отключение пользователя guest в Zabbix.]] * [[topic:linux_repare_nagios_db|Ремонт mysql базы nagios.]] * [[topic:junos_root_pass_reset|Сброс пароля root на Juniper SRX.]] * [[topic:srx_port_morror|Настройка port-mi * [[topic:srx-security-policy_logging|Логирование информации о проходящем через Juniper SRX трафике.]]
snmp
snmpwalk v3
# snmpwalk -v3 -l authPriv -u USERNAME -a MD5 -A "Authentication passphrase" -x AES -X "Privacy passphrase" x.x.x.201
Вывести 100 первых строк файла
kostya@aee3:~$ head -100 srx-firewall.log
FireFox
Создание и запуск нового профиля
Что бы запустить меню где можно сделать еще один профиль даем команду.
kostya@aee:~$ firefox -P
Запустить новый профиль.
kostya@aee:~$ firefox -P newprofile1 --no-remote
Приватный рехим при старте FF
Разовый запуск в приватном режиме.
kostya@aee:~$ firefox --private --no-remote
Запуск в приватном режиме через отдельный профиль.
kostya@aee:~$ firefox -P newprofile1 --no-remote
Правим настройки профиля, в строке адреса пишем about:config → browser.privatebrowsing.autostart → true.
Визуально понять, что находишься в приватном режиме можно только с помощью мемменджера “Firefox Hello”, иконка будет в виде пустого облачка разговора.
Посмотреть тип файловой системы
Есть несколько способов посмотреть тип файловой системы того или иного у раздела.
- fsck -N
[root@flow2 ~]# fsck -N /dev/flow2/data fsck from util-linux-ng 2.17.2 [/sbin/fsck.ext4 (1) -- /dev/mapper/flow2-data] fsck.ext4 /dev/mapper/flow2-data [root@flow2 ~]# file -sL /dev/flow2/data /dev/flow2/data: Linux rev 1.0 ext4 filesystem data (extents) (large files) (huge files)
- df -T
[root@flow2 /]# df -T Filesystem Type 1K-blocks Used Available Use% Mounted on /dev/sda1 ext4 5028480 1412692 3353696 30% / tmpfs tmpfs 255288 0 255288 0% /dev/shm /dev/mapper/flow2-data ext4 20507260 44992 19413900 1% /data
- mount
[root@flow2 /]# mount /dev/sda1 on / type ext4 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) tmpfs on /dev/shm type tmpfs (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) /dev/mapper/flow2-data on /data type ext4 (rw)
- blkid
[root@flow2 /]# blkid /dev/sda1: UUID="8b03ef26-3d77-476a-a9f3-7716016e9a32" TYPE="ext4" /dev/mapper/flow2-data: UUID="f0434e85-f0f2-49a7-86b4-49fb28a9cd8d" TYPE="ext4" /dev/sdb: UUID="3QdDg3-9s4R-jEuQ-2Y1Z-NMVl-JC70-TUJbOz" TYPE="LVM2_member"
Способы подсмотрел на itcollider.ru
Сгенерировать самоподписанный ssl сертификат
Для внутренних нужд можно быстренько сгенерировать самоподписанный сертификат след. командой:
openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/httpd/ssl/wiki.noc.company.name.key -out /etc/httpd/ssl/wiki.noc.company.name.crt
Далее в настройках apache в <VirtualHost *:443> добавляем след. директивы:
SSLEngine on SSLCertificateFile /etc/httpd/ssl/wiki.noc.company.name.crt SSLCertificateKeyFile /etc/httpd/ssl/wiki.noc.company.name.key
iperf
Установка
[root@fs ~]# yum install iperf Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile ...
Запуск сервера
Запускаем iperf как сервер (ключ -s) на конктном интерфейсе\адресе (ключ -B).
[root@fs sysconfig]# iperf -s -B 192.168.18.9 ------------------------------------------------------------ Server listening on TCP port 5001 Binding to local address 192.168.18.9 TCP window size: 85.3 KByte (default) ------------------------------------------------------------
Имитация voip трафика
Параметры G711:
- Размер одного пакета с “голосом” (в одном направлении) - 172 байта (160 байт на голос + 12 байт на информацию RDP протокола )
- За одну секунду, в одном направлении, передается 50 пакетов.
- Полоса g711, без учета L2 и L3 заголовков, занимает 64кбит/c.
Передаем эту информацию iperf (длина пакета -l, полоса -b) и на выходе он выдаст поток udp датаграмм, длиной 172 байт и будет пытаться уложить в 64кбит/c, при этом количество пакетов будет немного гулять. Трафик должен быть двунаправленным, даем ключ -d.
Один разговор
Со стороны клиента:
iperf -c 192.168.18.9 -d -u -t 60 -l 172 -b 64k
Со стороны сервера:
iperf -s -u
Три разговора
Со стороны клиента:
iperf -c 192.168.18.9 -d -u -t 60 -l 172 -b 64k -P 3
Со стороны сервера:
iperf -s -u -P1
Если сервер запустить без ключа “-P 1”, то в ответ сервер будет посылать обратно в два-три раза больше трафика.
iperf3
Сервер:
iperf3 -s -B 10.133.10.181
Клиент:
iperf3 -c 10.133.10.181 -t 600 --bidir iperf3 -c 10.133.10.181 -P 10 -t 600 --bidir perf3 -c 10.133.10.181 --set-mss 100 -P 20
find
Найти файлы моложе 10 минут и посчитать их.
[root@flow1 ~]# find /data/nfsen/profiles-data/live/c1/*/ -mindepth 1 -mmin -10 /data/nfsen/profiles-data/live/c1/2017/06/26 /data/nfsen/profiles-data/live/c1/2017/06/26/nfcapd.201706262100 /data/nfsen/profiles-data/live/c1/2017/06/26/nfcapd.201706262055 [root@flow1 ~]# find /data/nfsen/profiles-data/live/c1/*/ -mindepth 1 -mmin -10 | wc -l 3
Скачать видео с Youtube
Для скачвания видео нужен пакет youtube-dl, потом просто запускаем программу с адресом по которому находится видео. На выходе получим файст в формате mkv.
kostya@aee3:~$ youtube-dl https://www.youtube.com/watch?v=CQ4YpkeG3mQ [youtube] CQ4YpkeG3mQ: Downloading webpage [youtube] CQ4YpkeG3mQ: Downloading video info webpage [youtube] CQ4YpkeG3mQ: Extracting video information [youtube] CQ4YpkeG3mQ: Downloading MPD manifest WARNING: Requested formats are incompatible for merge and will be merged into mk [download] Resuming download at byte 549981115 [download] Destination: 1. LINUX. Основы _ Технострим-CQ4YpkeG3mQ.f248.webm [download] 100% of 1.08GiB in 02:34 [dashsegments] Total fragments: 586 [download] Destination: 1. LINUX. Основы _ Технострим-CQ4YpkeG3mQ.f140.m4a [download] 100% of 88.50MiB in 00:43 [ffmpeg] Merging formats into "1. LINUX. Основы _ Технострим-CQ4YpkeG3mQ.mkv" Deleting original file 1. LINUX. Основы _ Технострим-CQ4YpkeG3mQ.f248.webm (pass -k to keep) Deleting original file 1. LINUX. Основы _ Технострим-CQ4YpkeG3mQ.f140.m4a (pass -k to keep)
showhosts.php
В /etc/hosts, на одной из машин мониторинга, хранятся имена и адреса оборудования за котором следит nagios, rancid и т.д.
При работах связанных с администрирование сети в файл /etc/hosts приходится довольно часто смотреть, удобно сделать ссылку в браузере.
- showhosts.php
<!DOCTYPE HTML> <html> <head> <title>/etc/hosts</title> <link rel="icon" href="./favicon.ico" type="image/ico" /> </head> <a href="https://noc.somebank.local">- Домой -</a> <h3>Файл /etc/hosts на сервере msk-02-noc</h3> <h3>===</h3> <?php $fh = fopen("/etc/hosts", "r"); while (!feof($fh)) { $line = fgets($fh); echo $line . "<br />"; } fclose($fh); ?> <h3>===</h3> </html>
tee
Tee позводяет записывать вывод различных команд в файлы.
[root@leela ssh]# iptables -S | tee ~/current_iptables_rules_20170611
joe
Не создавать бэкапов редактируемых файлов (файл с тильдой в названии):
[root@leela ssh]# joe -nobackups /etc/sysctl.conf
/etc/resolv.conf
[root@2 ~]# cat /etc/resolv.conf search zzz.local domain zzz.local nameserver 192.168.10.22 nameserver 192.168.9.12 options timeout:0 attempts:1
Corrupted MAC on input
Есть линуксовые ВМ под ESXi.
На некоторых ВМ, после перезагрузки, начинает вышибать из ssh сессии с ошибкой “Corrupted MAC on input. Disconnecting: Packet corrupt”.
Так же может перестать нормально работать exim.
Лечится отключением TCP Offload Engine (TOE технология позволяющая перенести задачу формирования атрибутов tcp пакета с центрального процессора на сетевую карту, обычно используется на 10 и более Гбитных картах) на сетевом интерфейсе ВМ.
ethtool -K eth7 tx off rx off
Инфа по TOE - http://docs.gz.ro/node/282
telnet от другого адреса источника
# telnet -b 192.168.10.119 10.13.135.50 48999
—
Шпаргалка по регулярным выражениям
nmap
По mac адесу найти ip адрес
# nmap -sn 10.70.32.0/24 | grep -i -B 2 0c:c4:7a:5b:15:15 Nmap scan report for 10.70.32.44 Host is up (0.00048s latency). MAC Address: 0C:C4:7A:5B:15:15 (Unknown)
grep
Регистронезависимый grep
# cat MAC.csv | grep -i 2C93
000b823d2c93,241,xxxPxxx,standart,Victoria_Ivanova,+
Греп по нескольким паттернам
# grep -E 'Chassis|Seria' /home/rancid/var/*/configs/msk-04*
# grep -E 'Chassis|Seria' /home/rancid/var/*/configs/msk-04* /home/rancid/var/hp/configs/msk-04-sw1:;Chassis type: J9780A /home/rancid/var/hp/configs/msk-04-sw1:;Serial Number: CN58FPC1GV /home/rancid/var/hp/configs/msk-04-sw1:; Port # | Type | Prod # | Serial # | Part # /home/rancid/var/juniper/configs/msk-04-srx1:# Item Version Part number Serial number Description /home/rancid/var/juniper/configs/msk-04-srx1:# Chassis AT2213AF1868 SRX100B /home/rancid/var/juniper/configs/msk-04-srx1:# Serial ID AT2213AF1868
Показать строки до\после совпадения
Что бы показать строки рядом с местом где нашли совпадения надо дать дополнительные ключи:
- -A - показать строки после совпадения
- -B - показать строки до совпадения
- -C - показать строки до и после совпадения
После ключей указываем количество строк.
[root@msk-02-noc configs]# grep all-tcp msk-0* --color msk-04-srx1: all-tcp { msk-06-srx1: all-tcp { msk-07-srx1: all-tcp { [root@msk-02-noc configs]# grep all-tcp msk-0* -A 1 --color msk-04-srx1: all-tcp { msk-04-srx1- mss 1350; -- msk-06-srx1: all-tcp { msk-06-srx1- mss 1350; -- msk-07-srx1: all-tcp { msk-07-srx1- mss 1350; [root@msk-02-noc configs]# grep all-tcp msk-0* -C 1 --color msk-04-srx1- tcp-mss { msk-04-srx1: all-tcp { msk-04-srx1- mss 1350; -- msk-06-srx1- tcp-mss { msk-06-srx1: all-tcp { msk-06-srx1- mss 1350; -- msk-07-srx1- tcp-mss { msk-07-srx1: all-tcp { msk-07-srx1- mss 1350;
Показать конфиг без коментариев
Убрать пустую строку или содержащую “#”.
# grep -v -E "#|^$" main.conf # egrep -v "#|^$" main.conf # grep -v '^\s*$\|^\s*\#' ~/answer.txt
Вывести список файлов в которых нашлось совпадение (ключ -l)
# grep -l mail-mgmt *
Посмотреть модель оперативной памяти
[root@aee2 ~]# lshw -C memory .... *-memory description: System Memory physical id: 5 slot: System board or motherboard size: 4GiB *-bank:0 description: SODIMM DDR3 Synchronous 1333 MHz (0.8 ns) product: M471B5273CH0-CH9 vendor: Samsung physical id: 0 serial: 003FD7E6 slot: ChannelA-DIMM0 size: 4GiB width: 64 bits clock: 1333MHz (0.8ns) *-bank:1 description: DIMM [empty] physical id: 1 slot: ChannelB-DIMM0 ....
Символическая ссылка
ls -s /path/to/file_or_folder symlink_name
Сравнение файлов
diff file1 file2 - отчет о различиях, читать не удобно.
sdiff file1 file2 - читаемо, выводит сравниваемый текст в две колонки.
NFS
NFS-сервер
# joe /etc/exports
/mnt/mm x.x.x.y(rw,sync,no_subtree_check,all_squash,anonuid=1000,anongid=1000)
rw - разрешаем чтение и запись.
sync - режим работы при котором сервер ждет когда клиент запишет файл и только после этого подтверждает успешность записи.
no_subtree_check -
all_squash - разрешаем подключение от анонимного пользователя.
anonuid, anongid - при анонимной записи файла на сервер в качестве владельцев подставляем локальных пользователя и группу.
Применение изменений в файле /etc/exports
# exportfs -a
NFS-клиент
# mount -t nfs x.x.x.y:/mnt/mm /mnt/nfs-server
# umount /mnt/nfs-server
tar
Создать архив .tgz из файлов в текущей папке.
tar -czvf name.tgz *
Разархивировать .tgz в текущую папку.
tar -zxvf name.tgz
Показать каталог в виде дерева
# tree -puga test
# tree -pugad -L 2 test
Создать пользователя без домашней директории, задать шелл и группу
# useradd -M -s /bin/false -G nfs
Сделать загрузочную usb из iso образа
[root@blackpc Downloads]# dd if=ubuntu-16.04.1-desktop-amd64.iso of=/dev/sdX 2955680+0 records in 2955680+0 records out 1513308160 bytes (1.5 GB) copied, 315.148 s, 4.8 MB/s
root@aee3:~# dd if=/home/kostya/Downloads/ubuntu-20.04.4-desktop-amd64.iso of=/dev/sdb status=progress oflag=sync bs=4M 3376414720 bytes (3,4 GB, 3,1 GiB) copied, 314 s, 10,7 MB/s 805+1 records in 805+1 records out 3379068928 bytes (3,4 GB, 3,1 GiB) copied, 314,586 s, 10,7 MB/s
Обнуление счетчика icmp пакетов у команды ping
64 bytes from 176.114.202.2: icmp_seq=65533 ttl=55 time=5.32 ms 64 bytes from 176.114.202.2: icmp_seq=65534 ttl=55 time=5.32 ms 64 bytes from 176.114.202.2: icmp_seq=65535 ttl=55 time=5.32 ms 64 bytes from 176.114.202.2: icmp_seq=0 ttl=55 time=5.32 ms 64 bytes from 176.114.202.2: icmp_seq=1 ttl=55 time=5.32 ms 64 bytes from 176.114.202.2: icmp_seq=2 ttl=55 time=5.32 ms
Подключиться по RDP к Windows и примонтировать /home как диск
# rdesktop -u user -r disk:home=/home/user -g 90% -k en-us -d domain 192.168.0.1
date
Показать время в unix time
# date Sat Feb 6 23:50:54 MSK 2016 # date +%s 1454791857
Показать дату на один день меньше, задать свой формат даты
# date --date "-1 days" +'%d.%m.%Y'\\ 13.07.2015
# date +'%d.%m.%Y' -d '-90 days' 22.02.2019
$ date --date "-1 days -8 hours -58 minutes" +'%d.%m.%Y - %H:%M' 26.09.2024 - 03:01
Показать дату на много секунд меньше, задать свой формат даты
$ date +'%d.%m.%Y' -d '-11704356 seconds' 31.07.2021
Показать новые дату и время если прирост в секундах
Сервер загрузился в 2021-08-02 14:51 и потом сдох.
При падении сервера в консоль dmesg успел написать сообщения, но время в секундах с момента старта системы.
$ date --rfc-3339=seconds -d '2021-08-02 14:51:00+03:00 +10853509 seconds' 2021-12-06 05:42:49+03:00
TimeTicks
# snmpwalk -c what -v 1 localhost HOST-RESOURCES-MIB::hrSystemUptime.0
HOST-RESOURCES-MIB::hrSystemUptime.0 = Timeticks: (924428) 2:34:04.28
# snmpwalk -c what -v 1 -Otv localhost HOST-RESOURCES-MIB::hrSystemUptime.0
927919
TimeTicks/100 = секунды
TimeTicks/6000 = минуты
TimeTicks/360000 = часы
TimeTicks/8640000 = дни
Пример файла ifcfg-eth0
# cat /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 HWADDR=00:25:11:7A:AB:AA TYPE=Ethernet UUID=e619a645-c894-475d-88df-4d7a7deee559 ONBOOT=yes NM_CONTROLLED=no IPV6INIT=no BOOTPROTO=none IPADDR=10.254.1.7 PREFIX=24 GATEWAY=10.254.1.240 DNS1=172.16.0.11 DEFROUTE=yes
Посмотреть установленные сетевые карты
# yum install pciutils
# lspci | grep Eth
01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8101E/RTL8102E PCI Express Fast Ethernet controller (rev 02)
02:01.0 Ethernet controller: VIA Technologies, Inc. VT6105/VT6106S [Rhine-III] (rev 86)
02:02.0 Ethernet controller: 3Com Corporation 3c905B 100BaseTX [Cyclone] (rev 64)
Thunderbird - человеческий формат даты и времени
Решение честно списано - http://blog.amet13.name/2015/07/thunderbird-24.html
# joe /usr/bin/thunderbird
В начало файла пишем:
LC_TIME="ru_RU.UTF-8" export LC_TIME
После обновления thunderbird операцию повторить.
Cacti, длина поля data queries
По умолчанию длина стоит 15 символов.
Запрос “|host_description| - Traffic - port |query_ifDescr| (|query_ifAlias|)”
выдаст результат “test-sw1 - Traffic - port GigabitEthernet (to_test-sw2/p1)”,
т.е. не булет видно полностью название филического интерфейса коммутатора.
Увеличить значение можно в поле:
Configuration → Settings → Visual→ Maximum Field Length
Там же есть “Maximum Title Length” - длина подписи к графикам.
!H
1 192.168.0.91 (192.168.0.91) 3000.135 ms !H 3000.131 ms !H 3000.128 ms
[root@xxx ~]# ping 192.168.0.40 PING 192.168.0.40 (192.168.0.40) 56(84) bytes of data. From 192.168.0.91 icmp_seq=1 Destination Host Unreachable
Посмотри arp.
Скопировать папки на одном компе c помощью rsync
# rsync -vaW –progress /media/c117/ /media/mm/
UFW
/etc/ufw - конфиги файрволла
# ufw enable - запустить ufw и сказать, что ufw будет запускаться при старте системы.
# ufw reset - сбросить правила до дефолтных.
# ufw allow 22/tcp - разрешить ssh c any на any.
# ufw allow 100:102/udp - разрешить диапазон udp портов c any на any.
# ufw allow from 1.1.1.1 to any port 80 proto tcp - разрешить http с 1.1.1.1.
# ufw status numbered - посмотреть пронумерованный список правил.
# ufw delete 2 - удалить правило номер два, после удаления правила перенумеруются.
Запустить на удаленной машине rtorrent
ssh y@x.x.x.x 'screen -fa -d -m rtorrent'
Послать UDP-пакет
Отправляем 10 upd пакетов с порта 53 на порт 13546 на ip 1.1.1.1, имитируем ответ dns сервера.
# hping -c 10 –udp -s 53 –keep -p 13546 1.1.1.1
Распаковать .gz
# gzip -d srx-session-permit-unt-unt.log-20151023.gz
MOTH
Message of the day.
Просто надо поправить /etc/motd и при логине по ssh сообщение появится после последнего времени захода.
Комбо
# ifdown eth1 && ifup eth1
Cron
Формат.
0 1 * * * /path/to/script
минуты часы число месяц день_недели команда
Примеры:
- 17 13 * * * /path/to/script - каждый день в 13:17
- 17 13 * * 2,4,6 /path/to/script - каждый вторник, четверг и субботу в 13:17 (дни считаются от 0 до 6, 0 это воскресенье)
- 17 13 * * 1-5 /path/to/script - каждый день с понедельника по пятницу в 13:17
exaile на centos6
Подключаем репозиторий nux-dextop.
http://li.nux.ro/repos.html
Ставим exaile и gstreamer необходимые для работы с mp3.
# yum install exaile gstreamer-plugins-ugly
Посмотреть статус физического интерфейса в linux
[root@blackpc ~]# ethtool eth1 Settings for eth1: Supported ports: [ TP ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Half 1000baseT/Full Supported pause frame use: No Supports auto-negotiation: Yes Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Half 1000baseT/Full Advertised pause frame use: Symmetric Advertised auto-negotiation: Yes Link partner advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full Link partner advertised pause frame use: Symmetric Link partner advertised auto-negotiation: Yes Speed: 100Mb/s Duplex: Full Port: Twisted Pair PHYAD: 1 Transceiver: internal Auto-negotiation: on MDI-X: off Supports Wake-on: g Wake-on: d Current message level: 0x000000ff (255) drv probe link timer ifdown ifup rx_err tx_err Link detected: yes
Размер папки
Посмотреть размер текущей папки.
[root@noc3 src]# pwd /root/src [root@noc3 src]# du -sh 25M .
Посмотреть размер всех директорий и файлов в текущей папке.
[root@noc3 src]# du -sh * 14M dokuwiki 2.4M dokuwiki-b2463507f25624e2cdbab29a7e85ac37.tgz 16K epel-release-7-9.noarch.rpm 4.5M rancid-3.6.2 500K rancid-3.6.2.tar.gz 288K Socket-2.024 44K Socket-2.024.tar.gz 2.6M viewvc-1.1.26 604K viewvc-1.1.26.tar.gz
Отсортировать вывод по размеру файла\папки.
du -sh * | sort -h du -sh * | sort -h -r
SSH
Поменять пароль на ssh-ключ
kostya@aee4:~/.ssh$ ssh-keygen -p -f bastion-msoft Enter old passphrase: Key has comment 'kostya@aee4' Enter new passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved with the new passphrase.
SSH keepalive пакеты
SSH keepalive на стороне клиента
В одной из съемных квартир на хозяйском роутере стоял таймаут неактивных tcp сессии порядка 3 минут.
Постоянно выкидывало из ssh до рабочих машин.
Со стороны ssh клиента можно настроить отправку keepalive пакетов в сторону сервера.
В файл “~/.ssh/config” добавляем строчки:
Host * ServerAliveInterval 30 ServerAliveCountMax 10
- ServerAliveInterval - раз в сколько секунд отправлять keepalive пакета.
- ServerAliveCountMax - если ответ от сервера нет, то через сколько попыток признать ssh сессию мертвой.
SSH keepalive на стороне сервера
Все тоже самое, только надо эти настройки надо раскомментировать в файле “/etc/ssh/sshd_config/”.
... #Compression delayed ClientAliveInterval 30 ClientAliveCountMax 3 #UseDNS no ...
Socks proxy via ssh
ssh -f -C -N -D 127.0.0.1:44211 xyz@x.x.x.x
SSH DH-Group1
Ошибка:
Unable to negotiate with X.X.X.X port YYY: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1
Решение:
ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 user@some-old-server.com
Полезная ссылка на StackExchange.
Отключить проверку ssh ключей
Для Rancid (система сбора конфигурации с сетевого оборудования) иногда лучше отключить проверку ssh ключей, что бы он мог всегда зайти за устройство.
Для этого в .ssh/ создаем файл config и для определенных или всех хостов отключаем проверку.
[rancid@noc1 ~]$ ll .ssh/config -rw------- 1 rancid netadm 68 Jul 28 12:17 .ssh/config [rancid@noc1 ~]$ cat .ssh/config Host * StrictHostKeyChecking no UserKnownHostsFile /dev/null [rancid@noc1 ~]$
Удалить ssh ключ из know_hosts
$ ssh-keygen -f .ssh/known_hosts -R test.server.xxx
или
$ ssh-keygen -f .ssh/known_hosts -R 1.1.1.1