Bruke DSH (Distributed Shell) for å kjøre Linux-kommandoer på tvers av flere maskiner


Systemadministratorer vet alt for godt viktigheten av å kunne overvåke og administrere mange maskiner på kort tid, og helst med så lite løping som mulig. Enten det er et lite skymiljø, eller en enorm serverklynge, er muligheten til sentral administrasjon av datamaskiner avgjørende.

For delvis å oppnå dette, skal jeg vise deg hvordan du bruker et pent lite verktøy kalt DSH som lar en bruker kjøre kommandoer over flere maskiner.

Les også: Pssh – Utfør kommandoer på flere eksterne Linux-servere

Hva er DSH?

DSH er forkortelse for Distributed Shell eller Dancer's Shell det er fritt tilgjengelig på de fleste store distribusjoner av Linux, men kan enkelt bygges fra kilden hvis distribusjonen din ikke tilbyr det i pakkelageret. Kilden får du på.

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

Installer DSH (Distributed Shell) i Linux

Vi kommer til å anta et Debian/Ubuntu-miljø for omfanget av denne opplæringen. Hvis du bruker en annen distribusjon, vennligst bytt ut de riktige kommandoene for pakkebehandleren din.

Først, la oss installere pakken via apt:

$ sudo apt-get install dsh

Denne metoden er for de som ikke bruker Debian, og ønsker å kompilere den fra kildetjæreballer. Først må du kompilere libdshconfig og installere.

# 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

Så kompiler dsh og installer.

# 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

Hovedkonfigurasjonsfilen /etc/dsh/dsh.conf (for Debian) og /usr/local/etc/dsh.conf (for Red Hat) er ganske grei, men siden rsh er en ukryptert protokoll, er vi kommer til å bruke SSH som eksternt skall. Bruk tekstredigeringsprogrammet du velger, og finn denne linjen:

remoteshell =rsh

Og endre det til:

remoteshell =ssh

Det er andre alternativer du kan sende inn her, hvis du velger å gjøre det, og det er mange av dem å finne på dsh-man-siden. Foreløpig skal vi godta standardinnstillingene og ta en titt på neste fil, /etc/dsh/machines.list (for Debian).

For Red Hat-baserte systemer må du lage en fil kalt machines.list i /usr/local/etc/-katalogen.

Syntaksen her er ganske enkel. Alt man trenger å gjøre er å skrive inn en maskins legitimasjon (vertsnavn, IP-adresse eller FQDN) én per linje.

Merk: Når du får tilgang til mer enn én maskin samtidig, må du sette opp nøkkelbasert passordfri SSH på alle maskinene dine. Ikke bare gir dette enkel tilgang, men også sikkerhetsmessig hardner det maskinen din.

Min /etc/dsh/machines.list eller /usr/local/etc/machines.list fil sier:

172.16.25.125
172.16.25.126

Når du har skrevet inn legitimasjonen til maskinene du ønsker å få tilgang til, la oss kjøre en enkel kommando som \\oppetid\\ til alle maskinene.

$ 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

Så hva gjorde denne kommandoen?

Ganske enkelt. Først kjørte vi dsh og ga –a-alternativet til det, som sier å sende oppetid-kommandoen til ALLE av maskinene som er oppført i /etc/dsh/machines.list.

Deretter spesifiserte vi alternativet –M, som sier å returnere maskinnavnet (spesifisert i /etc/dsh/machines.list) sammen med utdataene fra oppetidskommandoen. (Veldig nyttig for sortering når du kjører en kommando på en rekke maskiner.)

Alternativet –c står for kommando som skal utføres i dette tilfellet, oppetid.

DSH kan også konfigureres med grupper av maskiner i filen /etc/dsh/groups/, der er en fil med en liste over maskiner i samme format som filen /etc/dsh/machines.list. Når du kjører dsh på en gruppe, spesifiser gruppenavnet etter -g-alternativet.

For Red Hat-baserte systemer må du opprette en mappe kalt grupper i katalogen /usr/local/etc/. I den groups-katalogen oppretter du en fil kalt cluster.

Kjør for eksempel w-kommandoen på alle maskiner som er oppført i cluster-gruppefilen /etc/dsh/groups/cluster eller /usr/local/etc/groups/cluster.

$ dsh –M –g cluster –c w

DSH gir mye mer fleksibilitet, og denne opplæringen skraper bare overflaten. Bortsett fra å utføre kommandoer, kan DSH brukes til å overføre filer, installere programvare, legge til ruter og mye mer.

For en systemadministrator som har ansvaret for et stort nettverk, er det uvurderlig.