Ús de DSH (Distributed Shell) per executar ordres de Linux en diverses màquines


Els administradors de sistemes saben massa bé la importància de poder supervisar i administrar nombroses màquines en poc temps i, preferiblement, amb el menor temps possible. Tant si es tracta d'un petit entorn al núvol com d'un enorme clúster de servidors, la capacitat de gestionar ordinadors de manera centralitzada és essencial.

Per aconseguir-ho en part, us mostraré com utilitzar una petita eina enginyosa anomenada DSH que permet a un usuari executar ordres en diverses màquines.

Llegiu també: Pssh - Executeu ordres en diversos servidors Linux remots

Què és DSH?

DSH és l'abreviatura de \Distributed Shell o \Dancer's Shell, està disponible gratuïtament a la majoria de distribucions principals de Linux, però es pot construir fàcilment des de la font si la vostra distribució no l'ofereix al seu repositori de paquets. Podeu obtenir la font a.

  1. http://www.netfort.gr.jp/~dancer/software/dsh.html.en

Instal·leu DSH (Distributed Shell) a Linux

Suposarem un entorn Debian/Ubuntu per a l'abast d'aquest tutorial. Si utilitzeu una altra distribució, substituïu les ordres adequades pel vostre gestor de paquets.

Primer, instal·lem el paquet mitjançant apt:

$ sudo apt-get install dsh

Aquest mètode és per a aquells que no utilitzen Debian i volen compilar-lo des de les boles de quitrà d'origen. Primer heu de compilar libdshconfig i instal·lar-lo.

# wget http://www.netfort.gr.jp/~dancer/software/downloads/libdshconfig-0.20.10.cvs.1.tar.gz
# tar xfz libdshconfig*.tar.gz 
# cd libdshconfig-*
# ./configure ; make
# make install

A continuació, compileu dsh i instal·leu-lo.

# wget http://www.netfort.gr.jp/~dancer/software/downloads/dsh-0.22.0.tar.gz
# tar xfz dsh-0.22.0.tar.gz
# cd dsh-*
# ./configure ; make 
# make install

El fitxer de configuració principal “/etc/dsh/dsh.conf” (per a Debian) i “/usr/local/etc/dsh.conf” (per a Red Hat) és força senzill, però com que rsh és un protocol sense xifrar, estem utilitzarà SSH com a shell remot. Utilitzant l'editor de text que trieu, cerqueu aquesta línia:

remoteshell =rsh

I canviar-ho per:

remoteshell =ssh

Hi ha altres opcions que podeu passar aquí, si ho trieu, i n'hi ha moltes per trobar a la pàgina man de dsh. De moment, acceptarem els valors predeterminats i farem una ullada al següent fitxer, /etc/dsh/machines.list (per a Debian).

Per als sistemes basats en Red Hat, heu de crear un fitxer anomenat machines.list al directori /usr/local/etc/.

La sintaxi aquí és bastant fàcil. Tot el que cal fer és introduir les credencials d'una màquina (nom d'amfitrió, adreça IP o FQDN) una per línia.

Nota: quan accediu a més d'una màquina simultàniament, caldria que configureu SSH sense contrasenya basat en clau a totes les vostres màquines. Això no només proporciona facilitat d'accés, sinó que, pel que fa a la seguretat, també endureix la vostra màquina.

El meu fitxer /etc/dsh/machines.list o /usr/local/etc/machines.list diu:

172.16.25.125
172.16.25.126

Un cop hàgiu introduït les credencials de les màquines a les quals voleu accedir, executem una ordre senzilla com \\uptime\\ a totes les màquines.

$ dsh –aM –c uptime
172.16.25.125: 05:11:58 up 40 days, 51 min, 0 users, load average: 0.00, 0.01, 0.05
172.16.25.126: 05:11:47 up 13 days, 38 min, 0 users, load average: 0.00, 0.01, 0.05

Llavors, què va fer aquesta comanda?

Bastant senzill. Primer, vam executar dsh i li vam passar l'opció -a, que diu que enviem l'ordre uptime a TOTES les màquines enumerades a /etc/dsh/machines.list.

A continuació, vam especificar l'opció –M, que diu que retornem el nom de la màquina (especificat a /etc/dsh/machines.list) juntament amb la sortida de l'ordre de temps d'activitat. (Molt útil per ordenar quan s'executa una ordre en diverses màquines.)

L'opció –c significa ordre a executar en aquest cas, temps de funcionament.

DSH també es pot configurar amb grups de màquines al fitxer “/etc/dsh/groups/”, on hi ha un fitxer amb una llista de màquines en el mateix format que el fitxer “/etc/dsh/machines.list”. Quan executeu dsh en un grup, especifiqueu el nom del grup després de l'opció -g.

Per als sistemes basats en Red Hat, heu de crear una carpeta anomenada grups al directori /usr/local/etc/. En aquest directori grups creeu un fitxer anomenat clúster.

Per exemple, executeu l'ordre w a totes les màquines que figuren al fitxer de grup clúster /etc/dsh/groups/cluster o /usr/local/etc/groups/cluster.

$ dsh –M –g cluster –c w

DSH ofereix molta més flexibilitat i aquest tutorial només rasca la superfície. A part d'executar ordres, DSH es pot utilitzar per transferir fitxers, instal·lar programari, afegir rutes i molt més.

Per a un administrador de sistemes encarregat de la responsabilitat d'una gran xarxa, és inestimable.