NOC online · 24/7Longview, TX · +1 323 412 0665
KinetikatechServers · Security · Websites
SL

Ukazi in spretnosti lupine Linux

Bash skriptiranje: od 'deluje na moji škatli' do produkcije

Bash si prisluži svoje mesto, ko je naloga lepljiva: orkestriraj ukaze, prepiraj preprosto besedilo in ostani v celoti na polju. Njegov ugled v panogi izvira iz pristanka, ne zaradi ideje: nepreizkušeni cevovodi, poslani v cron na strežniku, kjer je bila ena spremenljivka nenastavljena ali je eno ime datoteke imelo presledek. Disciplina je mehanska in poceni ter ima štiri dele: strogi način, navajanje, lupinsko preverjanje in beleženje načina, na katerega bodo operaterji to prebrali pozneje.

Ključne točke

  1. Vsak resen skript se odpre z set -euo pipefail: nenastavljene spremenljivke ne uspejo, napake ukaza ustavijo skript, cevovod leži na površini; brez tega napake tiho minejo, dokler ne dosežejo proizvodnje.
  2. Spremenljivke v narekovajih in zamenjave ukazov: "$var" in "$(cmd)"; delitev besed na presledke je klasika vseh časov in igranje IFS, ki ga priporočajo nekatera spletna mesta, je hrošč, ki si ga želite zapomniti.
  3. Razširitev oklepaja se zgodi pred spremenljivkami: rm -rf "${CLEANUP:?}"/{a,b} z nenastavljenim CLEANUP se razširi drugače, kot je bilo predvideno, in odstrani stvari, ki ste jih želeli obdržati; Preverjanja ${VAR:?} so idiom rm-safety, ki se ga je vredno enkrat naučiti.
  4. shellcheck si prisluži svoje mesto ob vsaki spremembi: lovi kroglice brez narekovajev, nedosegljivo kodo in vzorce 'za f v $(ls)', ki pojedo imena datotek s presledki; zaženite ga v CI in hrošči prenehajo doseči cron.
  5. Začasno delo in čiščenje sta seznanjena: TMP=$(mktemp -d), prestrezanje 'rm -rf "$TMP"' EXIT in brez osirotelih scratch dirs plus brez 'if error then remove' na vsaki veji.
  6. Preberite zanke na varen način: medtem ko IFS= read -r -d '' f obravnava imena datotek z novimi vrsticami in presledki prek find -print0; 'for f in $(ls)' so zastavice za lupino preverjanja napak in stari skripti še vedno povsod.
  7. Izhodne kode in dnevniki se pogovarjajo z operacijami: odmev napak v stderr (>&2) z umetniškim imenom, izhod, ki ni enak nič, ob resnični napaki in pustite, da vam cron-ova pošta ali dnevnik pokaže eno vrstico, ki jo dejansko potrebujete ob 3. uri zjutraj.
  8. Zgodnje stopnjevanje: razčlenjevanje JSON, tri in več ravni gnezdenja, klici HTTP ali katera koli logika stanja sodi v Python ali awk; bash, upognjen v splošni jezik, je tisto, kjer si je pridobil ugled.

Terenska beležka

Naša razširitvena brazgotina: rm -rf "${CLEANUP}"/{a,b} z nenastavljenim CLEANUP se je razširila točno tako, kot je želela lupina, ne namen. Vsaka taka pot zdaj nosi ${VAR:?} stražar in nihče ni plačal tega računa dvakrat.

Pogosta vprašanja

#!/bin/bash ali #!/usr/bin/env bash?

env zmaga med vsebniki in macOS namesti tam, kjer bash živi drugje; shebang je manj pomemben kot set -euo pipefail, ki je dejansko prisoten in shellcheck posreduje vsako spremembo.

Moj skript deluje ročno, vendar ne uspe v cronu. Zakaj?

Cron deluje z golim okoljem: PATH je kratka, ni profila za prijavo in relativne poti kažejo na napačen dom. Uporabite absolutne poti, izrecno nastavite PATH in obdržite bash -x replay za odpravljanje napak.

Bash ali Python za strežniške naloge?

Bash za cevovode, ki večinoma usmerjajo obstoječa sistemska orodja in ostanejo majhni; Python za strukturirane podatke, API-je in obravnavanje napak, ki morajo preživeti na klic. Prisiljevanje basha v igranje Pythona je način, kako incidenti dobijo imena.

Kako varno skriptiram brisanja?

Citirajte vsako spremenljivko, ciljajte samo na poti, ki jih ustvari mktemp, ali izrecno konfigurirane poti, zaženite z načinom suhega zagona, ki natisne, kar bi odstranil, in pustite ${VAR:?}, da varuje veto na spremenljivke, preden jih rm vidi.

Kako Kinetikatech pomaga s ukazi in spretnosti lupine linux

Ne morete postati eksperta za ukazi in spretnosti lupine linux: Ukazi in skriptne navade, ki odločajo, ali skrbnik upravlja strežnik ali se bori proti njemu: iskanje, preoblikovanje, prenos in nadzorovanje besedila in procesov z orodji, ki živijo v vsaki osnovni namestitvi. Nekatere za to obstaja Varnost strežnikov Linux in Upravljanje strežnikov: nastavitev, krepitev, monitoring in osebna strega dne in noči.

Pogovorite z inženirjem

Problem z strežnikom? Napadena spletna stran? Dolgo se naloži?

Kritični problemi rešeni v 30 minutah — nonstop, 7 dni v tednu.

Zahtevajte hitno podporo support@kinetikatech.com