Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΠΊΠΎΡ€Π·ΠΈΠ½ΡƒΠŸΠΎΠ·Π²ΠΎΠ½ΠΈΡ‚ΡŒ
Найти Π² Π”Π·Π΅Π½Π΅
Π£Ρ€ΠΎΠΊΠΈ Linux

πŸ“‘ Как ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ скриптов Π½Π° Bash с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ set -e ΠΈ set -u

πŸ“‘ Как ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ скриптов Π½Π° Bash с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ set -e ΠΈ set -u Одна ΠΈΠ· Π»ΡŽΠ±ΠΈΠΌΡ‹Ρ… ΠΈΠ³Ρ€ систСмных администраторов β€” ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ скрипт максимально Π½Π°Π΄Ρ‘ΠΆΠ½Ρ‹ΠΌ. Но Π±Π΅Π· ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Ρ… настроСк Π΄Π°ΠΆΠ΅ самый ΠΊΡ€ΡƒΡ‚ΠΎΠΉ сцСнарий ΠΌΠΎΠΆΠ΅Ρ‚ вСсти сСбя странно. ΠŸΠΎΠ³ΠΎΠ²Π°Ρ€ΠΈΠ²Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ скрипты β€” это Ρ‚Π΅, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ошибки Π½Π΅ скрыты, Π° явно ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½Ρ‹. Π’ΠΎΡ‚ Ρ‚ΡƒΡ‚ ΠΈ Π²ΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ Π² ΠΈΠ³Ρ€Ρƒ set -e ΠΈ set -u. - set -e β€” заставляСт сцСнарий ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΆΠ΅ ошибкС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π±Ρ‹Π»ΠΎ ΡΡŽΡ€ΠΏΡ€ΠΈΠ·ΠΎΠ². - set -u β€” ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΡ€ΠΈ использовании Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Ρƒ нас ΠΆΠ΅ всё Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ΄ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅ΠΌ, ΠΏΡ€Π°Π²Π΄Π°? Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ эти Π΄Π²Π° Ρ€Π΅ΠΆΠΈΠΌΠ°, Ρ‚Ρ‹ ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡˆΡŒΡΡ Ρ‡ΡƒΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΌ волшСбником ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки. ВсС ошибки Ρ„ΠΈΠΊΡΠΈΡ€ΡƒΡŽΡ‚ΡΡ сразу, Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ проскакиваСт... И Π½Π΅Ρ‚ риска Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΡΠΈΡŽΠΌΠΈΠ½ΡƒΡ‚Π½Ρ‹ΠΉ ΠΊΠΎΡˆΠΌΠ°Ρ€ ΠΈΠ·-Π·Π° ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠΈ ΠΈΠ»ΠΈ сбоя Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Классика ΠΆΠ°Π½Ρ€Π°: добавляСшь Π² Π½Π°Ρ‡Π°Π»ΠΎ скрипта: set -euo pipefail IFS=$' \t' Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρ‚Π²ΠΎΠΉ скрипт β€” ΠΊΠ°ΠΊ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ Π±Ρ€ΠΈΠ³Π°Π΄ΠΈΡ€: сразу ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΈ останавливаСтся. НС Ρ…ΠΎΡ‡Π΅ΡˆΡŒ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Ρ†Π΅Π»Ρ‹ΠΉ Π΄Π΅

πŸ“‘ Как ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ скриптов Π½Π° Bash с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ set -e ΠΈ set -u

Одна ΠΈΠ· Π»ΡŽΠ±ΠΈΠΌΡ‹Ρ… ΠΈΠ³Ρ€ систСмных администраторов β€” ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ скрипт максимально Π½Π°Π΄Ρ‘ΠΆΠ½Ρ‹ΠΌ. Но Π±Π΅Π· ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Ρ… настроСк Π΄Π°ΠΆΠ΅ самый ΠΊΡ€ΡƒΡ‚ΠΎΠΉ сцСнарий ΠΌΠΎΠΆΠ΅Ρ‚ вСсти сСбя странно.

ΠŸΠΎΠ³ΠΎΠ²Π°Ρ€ΠΈΠ²Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ скрипты β€” это Ρ‚Π΅, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ошибки Π½Π΅ скрыты, Π° явно ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½Ρ‹. Π’ΠΎΡ‚ Ρ‚ΡƒΡ‚ ΠΈ Π²ΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ Π² ΠΈΠ³Ρ€Ρƒ set -e ΠΈ set -u.

- set -e β€” заставляСт сцСнарий ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΆΠ΅ ошибкС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π±Ρ‹Π»ΠΎ ΡΡŽΡ€ΠΏΡ€ΠΈΠ·ΠΎΠ².

- set -u β€” ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΡ€ΠΈ использовании Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Ρƒ нас ΠΆΠ΅ всё Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ΄ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅ΠΌ, ΠΏΡ€Π°Π²Π΄Π°?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ эти Π΄Π²Π° Ρ€Π΅ΠΆΠΈΠΌΠ°, Ρ‚Ρ‹ ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡˆΡŒΡΡ Ρ‡ΡƒΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΌ волшСбником ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки. ВсС ошибки Ρ„ΠΈΠΊΡΠΈΡ€ΡƒΡŽΡ‚ΡΡ сразу, Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ проскакиваСт... И Π½Π΅Ρ‚ риска Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΡΠΈΡŽΠΌΠΈΠ½ΡƒΡ‚Π½Ρ‹ΠΉ ΠΊΠΎΡˆΠΌΠ°Ρ€ ΠΈΠ·-Π·Π° ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠΈ ΠΈΠ»ΠΈ сбоя Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

Классика ΠΆΠ°Π½Ρ€Π°: добавляСшь Π² Π½Π°Ρ‡Π°Π»ΠΎ скрипта:

set -euo pipefail

IFS=$'

\t'

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρ‚Π²ΠΎΠΉ скрипт β€” ΠΊΠ°ΠΊ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ Π±Ρ€ΠΈΠ³Π°Π΄ΠΈΡ€: сразу ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΈ останавливаСтся. НС Ρ…ΠΎΡ‡Π΅ΡˆΡŒ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Ρ†Π΅Π»Ρ‹ΠΉ дСнь Π½Π° поиск Π±Π°Π³ΠΎΠ²? Π’ΠΎΠ³Π΄Π° сдСлай свой сцСнарий Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ» Ρ‚Π΅Π±Π΅ «стоп», Π° Π½Π΅ «потСрялся»!

Ну Ρ‡Ρ‚ΠΎ, Π³ΠΎΡ‚ΠΎΠ² ΡΡ‚Π°Ρ‚ΡŒ настоящим мастСром стрСлочного исправлСния ошибок?

ΠŸΡ€ΠΈΠ³Π»Π°ΡΠΈ своих ΠΊΠΎΠ»Π»Π΅Π³ ΠΈ подписывайся Π½Π° ΠΊΠ°Π½Π°Π» https://t.me/LinuxSkill β€” Ρƒ нас Π΅Ρ‰Ρ‘ ΠΌΠ½ΠΎΠ³ΠΎ сСкрСтов для настоящих ΠΏΡ€ΠΎΡ„ΠΈ, Π° Π² Π±ΠΎΡ‚Π΅ https://t.me/gradeliftbot β€” ΠΆΠ΄ΠΈ свСТиС вакансии для систСмных Π°Π΄ΠΌΠΈΠ½ΠΎΠ²!

πŸ“© Π—Π°Π²Ρ‚Ρ€Π°: Как Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Fail2Ban Π·Π° 5 ΠΌΠΈΠ½ΡƒΡ‚!

Π’ΠΊΠ»ΡŽΡ‡ΠΈ πŸ”” Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ!