Cамые нужные команд SSH
Запускай команды быстро
Чтобы выполнить всего одну удаленную команду, совсем не обязательно подключаться к SSH, вводить команду, а затем отключаться. Можно сделать это сразу. Например, так можно посмотреть заполненность ФС удаленной машины:
А так — перезагрузить ее:
Составляй списки команд и запускай их разом
Если у тебя есть целый список команд, которые следует выполнить, их можно записать в файл и скормить этот файл SSH:
Редактируй удаленные файлы локальным редактором
Чтобы отредактировать файл на удаленной машине, не требуется заходить на нее и использовать консольный редактор. На самом деле файл можно открыть в твоем любимом текстовом редакторе на локальной машине (gvim заменяем на свой редактор):
Копируй содержимое удаленного файла в буфер обмена
Если необходимо скопировать содержимое удаленного файла или вывод команды в буфер обмена, не обязательно выводить его на экран или открывать в текстовом редакторе и копировать вручную. Можно использовать следующую команду:
А так можно скопировать вывод команды:
Сравнивай удаленный и локальный файл без копирования
Похожий прием можно использовать для сравнения двух файлов:
Работай с удаленными файлами с помощью локального файлового менеджера
Не всегда удобно работать с большим количеством файлов с помощью консольных команд или mc, запущенного на удаленной машине. Но всегда можно подключить любой каталог удаленной машины как сетевой диск. Для этого достаточно установить sshfs:
Создать каталог для подключения «сетевого диска»:
И подключить его:
Теперь все файлы удаленного каталога /home/user будут видны в каталоге ~/remote_files/ и с ними можно работать, как с обычными.
Копируй ключи быстро
Хоть и копирование публичного ключа на удаленный сервер — задача простая, но она требует выполнения нескольких действий вручную. Если тебя это напpягает, скопировать ключ можно в автоматическом режиме:
При этом не обязательно копировать основной ключ, с помощью флага -i можно указать любой другой:
Создай постоянное соединение с машиной
Если в течение дня ты часто подключаешься к одной машине, в том числе на несколько минут или секунд (чтобы просто запустить одну команду, например), есть смысл создать с ней постоянное соединение. Твой комп будет держать соединение открытым и использовать его для каждого подключения к машине. Это намного быстрее и экономичнее с точки зрения трафика и нагрузки на процессор.
Добавь следующие строки в ~/.ssh/config:
А затем создай соединение:
👉 @i_linux
Запускай команды быстро
Чтобы выполнить всего одну удаленную команду, совсем не обязательно подключаться к SSH, вводить команду, а затем отключаться. Можно сделать это сразу. Например, так можно посмотреть заполненность ФС удаленной машины:
$ ssh user@host df -hА так — перезагрузить ее:
$ ssh user@host sudo rebootСоставляй списки команд и запускай их разом
Если у тебя есть целый список команд, которые следует выполнить, их можно записать в файл и скормить этот файл SSH:
$ ssh user@host "`cat file.txt`"Редактируй удаленные файлы локальным редактором
Чтобы отредактировать файл на удаленной машине, не требуется заходить на нее и использовать консольный редактор. На самом деле файл можно открыть в твоем любимом текстовом редакторе на локальной машине (gvim заменяем на свой редактор):
$ gvim scp://user@host//путь/к/файлуКопируй содержимое удаленного файла в буфер обмена
Если необходимо скопировать содержимое удаленного файла или вывод команды в буфер обмена, не обязательно выводить его на экран или открывать в текстовом редакторе и копировать вручную. Можно использовать следующую команду:
$ ssh user@host cat /путь/к/файлу | xclipА так можно скопировать вывод команды:
$ ssh user@host uname -a | xclipСравнивай удаленный и локальный файл без копирования
Похожий прием можно использовать для сравнения двух файлов:
$ ssh user@host cat /путь/к/удаленному/файлу | diff /путь/к/лoкальному/файлу -Работай с удаленными файлами с помощью локального файлового менеджера
Не всегда удобно работать с большим количеством файлов с помощью консольных команд или mc, запущенного на удаленной машине. Но всегда можно подключить любой каталог удаленной машины как сетевой диск. Для этого достаточно установить sshfs:
$ sudo apt-get install sshfsСоздать каталог для подключения «сетевого диска»:
$ mkdir remote_filesИ подключить его:
$ sshfs user@host:/home/user ~/remote_files/Теперь все файлы удаленного каталога /home/user будут видны в каталоге ~/remote_files/ и с ними можно работать, как с обычными.
Копируй ключи быстро
Хоть и копирование публичного ключа на удаленный сервер — задача простая, но она требует выполнения нескольких действий вручную. Если тебя это напpягает, скопировать ключ можно в автоматическом режиме:
$ ssh-copy-id user@hostПри этом не обязательно копировать основной ключ, с помощью флага -i можно указать любой другой:
$ ssh-copy-id -i ~/my_key.pub user@hostСоздай постоянное соединение с машиной
Если в течение дня ты часто подключаешься к одной машине, в том числе на несколько минут или секунд (чтобы просто запустить одну команду, например), есть смысл создать с ней постоянное соединение. Твой комп будет держать соединение открытым и использовать его для каждого подключения к машине. Это намного быстрее и экономичнее с точки зрения трафика и нагрузки на процессор.
Добавь следующие строки в ~/.ssh/config:
Host host
ControlPath ~/.ssh/master-%r@%h:%p
ControlMaster noА затем создай соединение:
$ ssh -MNf user@host👉 @i_linux
👍3
Media is too big
VIEW IN TELEGRAM
Systemd. Мир IT с Антоном Павленко.
Процесс загрузки Linux. Systemd, Kernel, GRUB2, Bios
Что такое systemd? Управление демонами linux c помощью systemctl
Основные параметры unit systemd linux. Создание unit systemd.
Изменение и создание unit systemd. Как написать свою службу в Linux?
Все видео на youtube
👉 @i_linux
Процесс загрузки Linux. Systemd, Kernel, GRUB2, Bios
Что такое systemd? Управление демонами linux c помощью systemctl
Основные параметры unit systemd linux. Создание unit systemd.
Изменение и создание unit systemd. Как написать свою службу в Linux?
Все видео на youtube
👉 @i_linux
👍1
🔥6👍3
This media is not supported in your browser
VIEW IN TELEGRAM
🎥Bash Scripting Essentials
01 - Getting Started
02 - Hello World
03 - Intro to Variables
04 - Executing Commands
05 - Basic Math Functions
06 - A Simple "If" Statement
07 - Checking the Existence of Files
08 - Universal Update Script
09 - Standard Input, Output, & Error
10 - Creating a While Loop
11 - Correcting Laptop Insomnia
12 - Filesystem Locations For Bash Scripts
13 - The Case Statement
14 - Sending Email with sendEmail
15 - Sending Email (Part 2)
16 - Sending Email (Part 3)
Все видео доступны на youtube
👉 @i_linux
01 - Getting Started
02 - Hello World
03 - Intro to Variables
04 - Executing Commands
05 - Basic Math Functions
06 - A Simple "If" Statement
07 - Checking the Existence of Files
08 - Universal Update Script
09 - Standard Input, Output, & Error
10 - Creating a While Loop
11 - Correcting Laptop Insomnia
12 - Filesystem Locations For Bash Scripts
13 - The Case Statement
14 - Sending Email with sendEmail
15 - Sending Email (Part 2)
16 - Sending Email (Part 3)
Все видео доступны на youtube
👉 @i_linux
👍2
Скрипт проверки активности всех ppp-соединений Mikrotik
если нужно проверять только определенный вид ppp замените строку :
на строку, например
Для использования поставьте этот скрипт в Планировщик с нужным интервалом (оптимально не менее 30 сек).
👉 @i_linux
# если по тоннелю пинга нет, то осуществляется разрыв тоннеля для переподключения
# внимание ! скрипт будет отключать активное vpn-соединение с админом, т.к. до него пинга не будет !
# поэтому в скрипте сделан обход удаления данного соединения (задаётся в adminClient, должен соответствовать ppp secret)
:local adminClient "you ppp secret admins` name"
:local pppTest value=[/ppp active find];
:local pingNumber value=2;
:local pingMin value=1;
:foreach userTest in=$pppTest do={
:local pingOk value=[:ping [/ppp active get $userTest value-name=address] count=$pingNumber]
:if (($pingOk < $pingMin) && ([/ppp active get $userTest value-name=name]!=$adminClient)) do={
:log warning message=([/ppp active get $userTest value-name=service] . " auto disconnected: ". $pingOk . " ping ok over " . $pingNumber . " " . [/ppp active get $userTest value-name=name] . " " . [/ppp active get $userTest value-name=address])
/ppp active remove $userTest
}
}
если нужно проверять только определенный вид ppp замените строку :
# :local pppTest value=[/ppp active find];на строку, например
# :local pppTest value=[/ppp active find where service=pptp];Для использования поставьте этот скрипт в Планировщик с нужным интервалом (оптимально не менее 30 сек).
👉 @i_linux
👍3
Media is too big
VIEW IN TELEGRAM
Sniffer - современный альтернативный сниффер сетевого трафика.
Sniffer предназначен для поиска и устранения неисправностей в сети. Он может быть запущен в любое время для анализа процессов или соединений, вызывающих увеличение сетевого трафика, без загрузки каких-либо модулей ядра. Кстати, пользовательский интерфейс программы отзывчив, что позволяет автоматически подстраиваться под терминалы любого размера.
Sniffer использует библиотеку
Debian/Ubuntu
CentOS/Fedora
Windows
После этого установите sniffer командой go get
MacOS
$ brew install sniffer
Использование
❯
https://github.com/chenjiandongx/sniffer
👉 @i_linux
Sniffer предназначен для поиска и устранения неисправностей в сети. Он может быть запущен в любое время для анализа процессов или соединений, вызывающих увеличение сетевого трафика, без загрузки каких-либо модулей ядра. Кстати, пользовательский интерфейс программы отзывчив, что позволяет автоматически подстраиваться под терминалы любого размера.
Sniffer использует библиотеку
libpcap для перехвата пакетов пользовательского уровня, поэтому сначала необходимо установить ее.Debian/Ubuntu
$ sudo apt-get install libpcap-devCentOS/Fedora
$ sudo yum install libpcap libpcap-develWindows
https://npcap.com/После этого установите sniffer командой go get
$ go get -u github.com/chenjiandongx/snifferMacOS
$ brew install sniffer
Использование
❯
sniffer -h
# A modern alternative network traffic sniffer.
Usage:
sniffer [flags]
Examples:
# bytes mode in MB unit
$ sniffer -u MB
# only capture the TCP protocol packets with lo,eth prefixed devices
$ sniffer -b tcp -d lo -d eth
Flags:
-a, --all-devices listen all devices if present
-b, --bpf string specify string pcap filter with the BPF syntax (default "tcp or udp")
-d, --devices-prefix stringArray prefixed devices to monitor (default [en,lo,eth,em,bond])
-h, --help help for sniffer
-i, --interval int interval for refresh rate in seconds (default 1)
-l, --list list all devices name
-m, --mode int view mode of sniffer (0: bytes 1: packets 2: plot)
-n, --no-dns-resolve disable the DNS resolution
-u, --unit string unit of traffic stats, optional: B, Kb, KB, Mb, MB, Gb, GB (default "KB")
-v, --version version for sniffer
https://github.com/chenjiandongx/sniffer
👉 @i_linux
👍6
Как отлаживать bash-noscript-ы по шагам
Мне всегда хотелось иметь возможность отлаживать bash-noscripts так же, как и любой другой код, т.е. по шагам, и bash такую возможность предусмотрел, но о ней не все знают. Несмотря на довольно большой опыт использования Linux, я дошёл до неё только недавно.
Волшебная строчка, которую нужно добавить после
Процесс отладки
Запускаем скрипт, перед выполнением каждой команды выводится то, что будет исполняться, затем интерпретатор начинает ожидать нажатия клавиши <ENTER>.
Если понимаем, что что-то пошло не так, нажимаем
Ингредиенты
команда trap, которая умеет перехватывать разные сигналы и в нашем случае она перехватывает сигнал DEBUG, посылаемый перед выполнением команды
команда read, которая умеет ожидать ввода чего-нибудь с клавиатуры (в данном случае нам нужно только либо ENTER либо
переменная окружения $BASH_COMMAND, валидная внутри обработчика команды trap.
👉 @i_linux
Мне всегда хотелось иметь возможность отлаживать bash-noscripts так же, как и любой другой код, т.е. по шагам, и bash такую возможность предусмотрел, но о ней не все знают. Несмотря на довольно большой опыт использования Linux, я дошёл до неё только недавно.
Волшебная строчка, которую нужно добавить после
#!/bin/bash, чтоб скрипт можно было отлаживать по шагам#!/bin/bash
trap 'echo "# $BASH_COMMAND";read' DEBUG
echo line1
echo line2
echo line3Процесс отладки
Запускаем скрипт, перед выполнением каждой команды выводится то, что будет исполняться, затем интерпретатор начинает ожидать нажатия клавиши <ENTER>.
Если понимаем, что что-то пошло не так, нажимаем
Ctrl+C и выходим из отладки.Ингредиенты
команда trap, которая умеет перехватывать разные сигналы и в нашем случае она перехватывает сигнал DEBUG, посылаемый перед выполнением команды
команда read, которая умеет ожидать ввода чего-нибудь с клавиатуры (в данном случае нам нужно только либо ENTER либо
Ctrl+Cпеременная окружения $BASH_COMMAND, валидная внутри обработчика команды trap.
# Online Bash Shell.
# Code, Compile, Run and Debug Bash noscript online.
# Write your code in this editor and press "Run" button to execute it.
trap 'echo "# $BASH_COMMAND";read' DEBUG
echo line1
echo line2
echo line3
echo "Hello World";
👉 @i_linux
👍8