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

https://www.layerstack.com/resources/tutorials/Resetting-root-password-for-Linux-Cloud-Servers-by-booting-into-Single-User-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

https://afrozahmad.com/blog/ikev1-vs-ikev2-what-is-the-difference/

Узнать 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

http://blogin.by/topics/92

:~$ 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

https://downloads.mariadb.org/mariadb/repositories/


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

FIXMEПосмотреть как сделать белый фон.

Вывести построчно файл начиная с конца

Есть файл 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:configbrowser.privatebrowsing.autostarttrue.

Визуально понять, что находишься в приватном режиме можно только с помощью мемменджера “Firefox Hello”, иконка будет в виде пустого облачка разговора.

Посмотреть тип файловой системы

Есть несколько способов посмотреть тип файловой системы того или иного у раздела.

  1. 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)
  2. 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
  3. 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)
  4. 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:

Передаем эту информацию 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

Шпаргалка по регулярным выражениям

PDF
http://www.exlab.net/tools/sheets/regexp.html


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

Показать строки до\после совпадения

Что бы показать строки рядом с местом где нашли совпадения надо дать дополнительные ключи:

После ключей указываем количество строк.

[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 минуты часы число месяц день_недели команда

Примеры:


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

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