Zobrazujú sa príspevky s označením linux. Zobraziť všetky príspevky
Zobrazujú sa príspevky s označením linux. Zobraziť všetky príspevky

13. 12. 2024

Linux - mount súboru cez iný súbor

 Pre dočasné prepísanie súboru (skôr unesenie) je možné použiť v linuxe mount príkaz s parametrom --bind. Je tak možné napr prepísať konfiguračný súbor na readonly filesystéme rôznych IOT zariadení. Následný umount vráti súbor do pôvodného stavu.

sudo mount --bind ./moj_subor.txt ./prepisany_subor.txt

V mount výpise je potom vidieť podobný riadok:
/dev/sda1 on /cesta/prepisany_subor.txt type ext4 (rw,relatime,errors=remount-ro)

9. 8. 2024

Shell - paralelné spúšťanie podprocesov vrámci skriptu

Niekedy, z výkonového hľadiska, chceme spustiť paralelne viaceré podprocesy zo shell skriptu a čakať kým všetky dobehnú, než pokračujeme ďalším kódom.

Prvá možnosť je príkaz wait. Ten čaká na všetky podprocesy, ja však zozbieram čísla procesov do premennej PIDS (reťazec), aby som čakal len na konkrétne.

PIDS=""
FAIL=0
for subor in `ls *.txt`; do
   spracuj.sh $subor &
   PIDS="$PIDS $!"
done
for job in $PIDS; do
  wait $job || FAIL=1
done

Ak chceme spustiť niečo s x-paralelnými procesmi, aj s čakaním na dobehnutie, je tu druhá možnosť.

Xargs ponúka parameter P pre paralelizmus, v parametri I sa dá definovať skratka nahradzujúca parameter v paralelne spúšťanom príkaze (tu server z textového zoznamu, z ktorého SCP skopíruje subor.txt, paralelne 3 procesmi).

grep -v ^# zoznam_serverov.txt | xargs -n1 -I{} -P3 scp -B -o ConnectTimeout=6 {}:/tmp/subor.txt ./subory 2>log/log_err.log

4. 11. 2022

Shell - hranie sa s AWK

AWK najčastejšie vidieť v jednoriadkových skriptoch ako filter stĺpcov. V skutočnosti ide o skriptovací jazyk, ktorý sa hodí na zložitejšie spracovanie textu v stĺpcoch. Ponúka definíciu vlastných premenných, polí, funkcií a regulárne výrazy.

Sériovo spracúva podmienky štýlom:

podmienka1 { prikaz1 }
podmienka2 { prikaz2 }

Bloky so slovami BEGIN a END miesto podmienky sú vykonané len raz, pred a po spracovaní vstupu.

Špeciálne premenné:
NR - počet záznamov (riadkov), NF - počet polí (stĺpcov) vrámci záznamu
RS - oddeľovač záznamov, FS - oddeľovač polí
$0 - celý riadok (v print netreba uvádzať ak je to jediný argument),  $1 - prvý stĺpec, $2 - druhý stĺpec..


Príklad analyzuje dvojbodkami oddelené záznamy v súbore /etc/passwd z hľadiska bezpečnosti:

awk -F: 'BEGIN { print "=== analyza /etc/passwd" }
$3 == "0" { print "rootom je: "$1 };
$3 == "0" { print "root grupa je: "$1 };
list[$3]++{print "duplicitne id pouzite pre "$1}
/sh$/ { print "shell ma: "$1 }
END { print NR" riadkov" } ' /etc/passwd


Suma v druhom stĺpci zoskupená podľa prvého (asociatívne pole), výpis všetkých hodnôt na koniec:

awk -F\  ' list[$1]+=$2 {} END { for ( i in list ) print i" "list[i] } ' auta.txt


Výpis 3 riadkov po nájdenom reťazci

awk ' /^<Directory/ { for ( i=1; i<=3; i++) { print;getline }  } ' /etc/apache2/apache2.conf


Výpis riadkov medzi dvoma nájdenými reťazcami:

awk ' /^<Directory/,/\/Directory/ { print } ' /etc/apache2/apache2.conf


4. 8. 2022

Shell - find príkazy na zvýšenie bezpečnosti

V postupoch pre zvýšenie bezpečnosti Linuxu (hardening) je väčšinou aj kontrola práv súborov a adresárov.

# 1.VYHLADANIE SUID A SGID, ULOZENIE MD5SUM - INICIALNY BEH
(find / '(' -path /proc -o -path /sys -o -path /snap ')' -prune -o \
 -perm /6000 -type f -ls 2>/dev/null ; \
 find / '(' -path /proc -o -path /sys -o -path /snap ')' -prune -o \
 -perm /6000 -type f -print 2>/dev/null | xargs -n 50 md5sum) \
 | sort | tee suid_ref

# 2.POROVNAVACI BEH
(find / '(' -path /proc -o -path /sys -o -path /snap ')' -prune -o \
 -perm /6000 -type f -ls 2>/dev/null ; \
 find / '(' -path /proc -o -path /sys -o -path /snap ')' -prune -o \
 -perm /6000 -type f -print 2>/dev/null | xargs -n 50 md5sum) \
 | sort | diff suid_ref - | Mail -s 'SU zmenene' admin@yoursite.com

# 3.KONTROLA SO ZLYM POUZIVATELOM ALEBO GRUPOU (Z INEHO SYSTEMU)
find / -path /proc -prune -o -nouser -o -nogroup -ls 2>/dev/null

# 4.ZAPIS PRE VSETKYCH (NAPR ADRESAR TMP)
find / '(' -path /proc -o -path /sys -o -path /snap ')' -prune -o \
 -perm -2 ! -type l ! -type c -ls 2>/dev/null

# 5.KONTROLA TEMPU NA EXECUTABLE ALEBO SUID, SGID, LINKY
find /tmp -perm /6111 ! -type d -ls 2>/dev/null
find /tmp '(' -name '.??*' -o -name '.[^.]' ')' -type f -ls 2>/dev/null

# 6.KONTROLA NA PODVRHNUTE ZAKLADNE PRIKAZY ls, cd, grep, su, sudo V INYCH CESTACH
find / '(' -path /snap -o -path /bin -o -path /usr ')' -prune -o \
 '(' -name "ls" -o -name "cd" -o -name "grep" -o -name "su" -o -name "sudo" ')' \
 -perm -1 -type f -ls 2>/dev/null

Prvé dve vyhľadávania hľadajú súbory s právami suid/sgid, teda spustením preberajúce práva vlastníka/skupiny súboru. Vypíše ako práva a dátumy, tak aj kontrolnú sumu a uloží do "suid_ref" súboru, voči nemu druhý porovnáva zmeny. Analyzovať tak stačí zmeny.

Ignorujú cesty začínajúce /proc, /sys a /snap, sú systémom generované a posledný je read-only.

3. hľadá súbory s neznámym vlastníkom, stáva sa pri rušení používateľov alebo prenose z iného systému

4. hľadá súbory a adresáre so zápisom pre všetkých, očakávané napr. pre /tmp adresár

5. hľadá suid, sgid a executable práva v /tmp, táto kontrola síce nie je dostatočná (spustiť možno aj súbor bez práv na spustenie), avšak ľahko sa kontroluje - nemá nič vrátiť.

6. podvrhnuté náhrady príkazov pre PATH=. , táto cesta by nemusela byť nastavená, ani pre bežného používateľa, nieto root


Find možno použiť aj na konkrétny súbor na kontrolu práv:

# KONTROLA KONKRETNYCH SUBOROV NA NADMERNE PRAVA

for x in /etc/passwd:f:6133 /etc/shadow:f:6137 /etc/fstab:f:6133; do
 s=`echo $x | cut -d':' -f1`
 t=`echo $x | cut -d':' -f2`
 p=`echo $x | cut -d':' -f3`
 echo -ne "kontrola $s \t ... "
 if [ "`find $s -type $t -perm /$p`" != "" ]; then echo "NOK";
  else echo "OK"; fi
done

11. 9. 2020

Shell - čakanie na stav podprocesov

Zo shell skriptu spúšťam na pozadí paralelne podprocesy. Po spustení čakám s akým stavom dobehnú. Našiel som tento príklad použitia "wait" príkazu:

PIDS=""  # cisla forknutych procesov
fail=0   # exit podprocesov
for x in ...; do
 $cmd
 PIDS="$PIDS $!"
done
for pid in $PIDS; do
 wait $pid || fail=1
done

10. 9. 2020

Shell - odstránenie farieb z výpisu

Ak skript vypisuje na obrazovku farbičkami a chceme to logovať, špeciálne znaky pre nastavenie farieb (ctrl) odstránime napríklad takto:
farby.sh | perl -pe's/\e\[?.*?[\@-~]//g'

16. 6. 2017

NAS Server 13 - automatické vypínanie

Keďže sa NAS už nejakú dobu používa cez týždeň najmä večer po práci, či už na prehrávanie rozprávok cez DLNA, alebo zálohovanie fotiek, je výhodné riešiť jeho automatické vypínanie na noc.
Pôvodný skript bol príliš nespoľahlivý, zisťoval len pripojené spojenia na NAS cez netstat, naplánovaná kontrola bola teda len na hlboké nočné časy.
Novší skript kontroluje pripojené zariadenia v sieti.

11. 5. 2017

Oracle - shell odmazávač starých logov

Tu je shell skript, ktorým na unixovom serveri mažem rôzne oracle log súbory o ktoré sa nestará ADRCI. Ide hlavne o adump súbory (audit prihlásení do DB).
Funguje ako doplnok k minule riešenému odmazávaniu cez ADRCI.

Tento jednoduchý program je inšpirovaný unixovým príkazom find, jadrom je funkcia "zmazf" ktorá je rozdelená na dve časti, jedna ponechá zadaný počet súborov (posledných).
Druhá časť hľadá cez find súbory staršie ako daný počet dní.

Zdrojový kód:

16. 2. 2017

Nastavenie retro farieb na termináli

Keďže dlhodobo pozerám do terminálu, pokusmi som si nastavil pre oči príjemnejšie prostredie. Pozadie tmavo-zelené, písmo bledo-žlté, pripomínajúce staré obrazovkové terminály:
-pozadie: R:21 G:49 B:15 (hex: 15310F)
-písmo: R:232 G:225 B:142 (hex:E8E18E)


Ďalšou úpravou bol font, väčšina fontov je zbytočne širokých, pre čo najviac znakov na riadok je potrebné font zmenšovať čo je náročné na zrak. Našiel som celkom pekný voľný font Envy Code R, používam ho vo veľkosti 11. https://www.fontsquirrel.com/fonts/Envy-Code-R

4. 2. 2017

NAS Server 12 - zaheslovanie adresára v apache

Pre spojazdnenie oddelenej https verzie stránky som vytvoril nový adresár, nastavil ho v konfigurácií apache. Pre lepší pocit som stránky ukladal pod novým používateľom pre prípad prelomenia prístupu.
Teraz keď to funguje, zaheslujem podadresár štandardným spôsobom ktorý ponúka apache, súborom htpasswd.

Postup https://help.ubuntu.com/community/EnablingUseOfApacheHtaccessFiles
som použil pre inšpiráciu a upravil podľa svojich potrieb.

30. 1. 2017

NAS Server 11 - spojazdnenie HTTPS stránok

Keďže niektoré web aplikácie, prípadne dokumenty chcem mať prístupné na svojom "NAS" úložisku bezpečne aj z vonka, rozhodol som sa sprístupniť z vonkajšej siete HTTPS port na apache webovom serveri.
Tiež mi prišlo jednoduchšie pre oddelenie "externých" a "interných" stránok rozdelenie http a https verzií do rôznych adresárov na disku.

31. 12. 2016

NAS server 10 - plné otáčky ventilátora pri vypínaní

Po zregulovaní ventilátora cez fancontrol malo toto jedinú chybičku krásy a to plné otáčky ventilátora pri vypínaní NAS servera.
Možno (okrem umiestnenia za skriňou) aj toto prispelo k zanášaniu hustého rebrovania chladiča.


Nebol by to linux, aby tento problém už v nejakom internetovom fóre niekto nevyriešil, tu som našiel inšpiráciu vo fóre Arch: https://bbs.archlinux.org/viewtopic.php?id=118245

14. 11. 2016

NAS server 9 - SMART výpis diskov v linuxe

Nedávno som zachytil článok (link) o ničení SSD diskov otvoreným prehliadačom Firefox častým prepisom súboru recovery.js. Sem ukladá otvorené záložky pre prípad pádu. Štandardný interval prepisu súboru je 15 sekúnd, zamenil som ho (about:config - browser.sessionstore.interval) na 5 minút.

Napadlo ma, že by nebolo zlé sledovať SMART parametre (wiki), ktoré poskytujú disky o svojom stave (čas behu, vadné bloky, výkon).

25. 9. 2016

NAS server 8 - regulácia ventilátora

Napriek úspornému procesoru bolo počuť hluk od ventilátora NAS serveru. Dalo by sa to pravdepodobne riešiť nastavením v BIOSe na úplné vypínanie, avšak povedal som si, že operačný systém môže regulovať otáčky podľa rôznych požiadaviek.

Pre reguláciu som chcel skript, nie grafický program, preto som použil pwmconfig. Tento skript sa nachádza v balíku fancontrol.

11. 9. 2016

Shell - zistenie adresára procesu

Pri prezeraní procesov v unix systémoch sa niekedy hodí zistiť adresár z ktorého boli spustené. Pre linux funguje AIX aj SOLARIS verzia:

HPUX:  pfiles $PID | grep bin
AIX:   ls -l /proc/$PID/cwd
SOLARIS:   pwdx $PID

8. 9. 2016

Shell - nástroje linuxového príkazového riadka

Tu som si zozbieral poznámky k pár príkazom používaným z príkazového riadka v linuxe. Ide o head, tail sort, uniq, wc, tr, grep, a awk utilitky.
Ich výstup možno reťaziť cez pipe a dosiahnuť tak napríklad abecedne zoradené neduplicitné slová z 5teho stĺpca súboru.

31. 8. 2016

Handbrake zamŕza pri scane DVD

Zálohovaniu DVD pod linuxom treba občas pomôcť. Ak softvér Handbrake zamŕza pri analýze DVD (scan) a odmieta pokračovať, je možné otvoriť len jeden "titul".
Pre zistenie zoznamu titulov použijem "lsdvd", najskôr ho treba nainštalovať

sudo apt-get install lsdvd

9. 7. 2016

NAS server 7 - úsporný režim CPU a HDD

Keďže server beží často celý deň, aj keď sa naň nik nepripája, oplatí sa kôli úspore prúdu, hlučnosti chladenia, upraviť nastavenia linuxu. Pozrel som sa na úsporný režim disku a nastavenia ovládačov cez powertop.

7. 6. 2016

PHP - obrázky z mobilu na server

Často je problémom ako dostať fotky zo smartfónu do počítača, počítač nemá bluetooth a kábel sa zapatroší.
Sú tu možnosti - nahrať fotky do google (ochrana súkromia?), alebo ich nahrať do rozpísaného mailu (draft).

V prípade domáceho servera s PHP (u mňa NAS) možno narýchlo použiť formulár na nahranie súboru napríklad aj z mobilu cez browser. A browserom na počítači ho stahnuť.

26. 3. 2016

Linux CLI - Konverzia DVD do jedného súboru

Moje prvé pokusy o zálohu DVD na NAS server viedli k myšlienke konverzie na jeden úspornejší súbor v inej kompresii (.avi?).
Ideálna z hľadiska výkonu by bola konverzia na novom NAS serveri s linuxom, miesto zaťaženia slabšieho procesora notebooku.