Portál AbcLinuxu, 11. května 2025 10:14

Dotaz: Volanie, vytvorenie premennej z ineho suboru

12.12.2013 15:09 mephisto35
Volanie, vytvorenie premennej z ineho suboru
Přečteno: 377×
Odpovědět | Admin
Mam nasledovny problem: Mam na starosti cca 50 serverov. Kazdy je rovnako nakonfigurovany - Gentoo a kazdy ma 2 disky v RAID1. Potrebujem pravidelne skontrolovat, ci su v poriadku. Zakladom je /proc/mdstat Pripojenie s heslom a spustenie prikazu robim nasledovne:

sshpass -p 'heslo' ssh -p 22 uzivatel@ipadresa cat /proc/mdstat | grep "\[UU\]"

Toto je aj v poriadku Napisal som skript:

HESLO="moje heslo" PRIKAZ1="sshpass -p $HESLO ssh -p 22" PRIKAZ2='cat /proc/mdstat | grep "\[UU\]"' TEST="$PRIKAZ1 uzivatel@ipadresa $PRIKAZ2"

if $TEST then echo "Disky OK" else echo "Zly disk" fi

Kedze mam vela serverov, potrebujem to dat do cyklu. Moja predstava je: vytvorit subor s nazvami serverov a v skripte riadok po riadku volat servery z externeho suboru ktory obsahuje ich nazvy. Skusal som uz vela moznosti, no nedari sa mi. Vie mi niekto pomoct?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

12.12.2013 15:41 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: Volanie, vytvorenie premennej z ineho suboru
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nejake to máš moc prešpekulované. Použi na ssh autentifikáciu kľúče, pusti ssh-agenta, nahraj do neho privátny kľúč, mená serverov napíš do súboru server_names a pusti
for server in `cat server_names`
do
  echo $server
  ssh  $server grep "\[UU\]" /proc/mdstat
done
12.12.2013 15:50 Chulda | skóre: 20
Rozbalit Rozbalit vše mdadm
Odpovědět | | Sbalit | Link | Blokovat | Admin
Není jednodušší využít toho, co tam už je - mdadm? Na centosu se to spouští jako daemon a umí to posílat přes syslog.

https://raid.wiki.kernel.org/index.php/Detecting,_querying_and_testing
12.12.2013 16:05 NN
Rozbalit Rozbalit vše Re: Volanie, vytvorenie premennej z ineho suboru
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nepouzivej hesla ve skriptech, pouzivej SSH klice.
for ip in $list; do ssh user@$ip $2; done
12.12.2013 22:05 Andrej | skóre: 51 | blog: Republic of Mordor
Rozbalit Rozbalit vše Re: Volanie, vytvorenie premennej z ineho suboru
Odpovědět | | Sbalit | Link | Blokovat | Admin
Kedze mam vela serverov, potrebujem to dat do cyklu.

To není pravda. Přesně k tomu je určené pssh, aby člověk nemusel dělat ručně nějaký cyklus. Vytvoří se soubor s názvy serverů (a uživatelskými jmény, případně porty) s řádky ve formátu user@host:port a pssh pak jednoduše spustí příkaz přes SSH paralelně na všech serverech najednou. Samozřejmě je potřeba používat SSH klíče, protože hesla v souborech jsou nebezpečný nesmysl. Díky pssh se všechno zařídí automaticky — od spuštění příkazu na daných serverech až po zpracování výstupu příkazů, což může být buď výpis na terminál nebo přidání do souborů pro každý server.

Kdybys chtěl za každou cenu znova vynalézat kolo, ovšem bez paralelismu, můžeš to zařídit zhruba takto:

while read UZIVATEL SERVER RSAFILE discard; do
        PRIKAZ1="ssh -i $RSAFILE -p 22"
        PRIKAZ2='cat /proc/mdstat | grep '\''\[UU\]'\'
        TEST="$PRIKAZ1 ${UZIVATEL}@${SERVER} $PRIKAZ2"
        if $TEST; then echo "Disky OK"; else echo "Zly disk"; fi
done < seznam_serverů    # <<< Tohle je klíčové!
Soubor seznam_serverů by pak mohl vypadat například takto:
lojza       2a01:abcd:ef01:2345::     ~/.ssh/id_rsa.0
franta      2a01:abcd:ef01:2345::1    ~/.ssh/id_rsa.1
hubert      2a01:abcd:ef01:2345::1    ~/.ssh/id_rsa.2

Ale jak už jsem psal — nesrovnatelně lepší je použít pssh. Spouští SSH paralelně, má hezčí výstup a člověk si nemusí nic hackovat manuálně.

Jendа avatar 13.12.2013 03:32 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Volanie, vytvorenie premennej z ineho suboru
hesla v souborech jsou nebezpečný nesmysl
Jak se to liší s bezpečností od klíčů v souborech?
Soubor seznam_serverů by pak mohl vypadat například takto:
Využil bych výhod kryptografie s veřejným klíčem a měl jenom jeden soukromý, jehož veřejná část by byla rozkopírovaná na všech serverech.
13.12.2013 22:15 Andrej | skóre: 51 | blog: Republic of Mordor
Rozbalit Rozbalit vše Re: Volanie, vytvorenie premennej z ineho suboru
Jak se to liší s bezpečností od klíčů v souborech?

Například tím, že heslo na příkazové řádce se vždycky na chvíli objeví ve výstupu z ps, jakkoliv se příslušný program snaží ho rychle skrýt. (Jasně, každý systém má na tohle nějaký drobný tweak, ale obecně je psaní hesel do příkazové řádky hodně špatný nápad.) Další zjevný rozdíl je, že klíč v souboru může být (a měl by být) zašifrovaný, tj. parametr -i má především říct SSH, na co se má zeptat ssh-agenta, nikoliv co má jen tak samo otvírat (i když nešifrované klíče přímo otvírat umí).

Zpravidla tohle řeším tak, že mám někde spuštěný screen se ssh-agentem a v ssh-agentovi načtené klíče. To sice není ideální řešení (například rootkitu opravdu neodolá, narozdíl od samotných zašifrovaných klíčů), ale pořád je to asi tak o řád lepší než heslo v textovém souboru. Navíc je to velmi pohodlné, protože hesla od klíčů nemusím zadávat častěji než jednou za uptime daného stroje.

Využil bych výhod kryptografie s veřejným klíčem a měl jenom jeden soukromý, jehož veřejná část by byla rozkopírovaná na všech serverech.

Nic proti tomu. Pravda je, že klíče uložené pohromadě na jednom systému nejsou o nic bezpečnější než jeden klíč ... většinou ... podle toho, kolik jich člověk zároveň používá == má dešifrovaných v RAM.

13.12.2013 07:58 Chulda | skóre: 20
Rozbalit Rozbalit vše Re: Volanie, vytvorenie premennej z ineho suboru
Jako seznam loginů, adres a klíčů je výrazně lepší použít ~/.ssh/config, více viz man ssh_config. Ve skriptu pak zůstane jen PRIKAZ2 a alias serveru z config souboru.
13.12.2013 22:21 Andrej | skóre: 51 | blog: Republic of Mordor
Rozbalit Rozbalit vše Re: Volanie, vytvorenie premennej z ineho suboru

To ale pssh nenahradí. Ale může to posloužit jako doplněk k pssh, třeba když člověk potřebuje nastavit ještě jiné optiony než jenom login a port. (A že jich je...)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.