Brug af DSH (Distribueret shell) til at køre Linux-kommandoer på tværs af flere maskiner


Systemadministratorer ved alt for godt vigtigheden af at være i stand til at overvåge og administrere mange maskiner på kort tid og helst med så lidt løb som muligt. Uanset om det er et lille skymiljø eller en enorm serverklynge, er evnen til at administrere computere centralt afgørende.

For delvis at opnå dette skal jeg vise dig, hvordan du bruger et smukt lille værktøj kaldet DSH, der giver brugeren mulighed for at køre kommandoer over flere maskiner.

Læs også: Pssh - Udfør kommandoer på flere eksterne Linux-servere

Hvad er DSH?

DSH er en forkortelse for "Distribueret Shell" eller "Dancer's Shell", det er frit tilgængeligt på de fleste større distributioner af Linux, men kan let bygges fra kilden, hvis din distribution ikke tilbyder det i dets pakkeopbevaring. Du kan få kilden på.

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

Installer DSH (Distribueret shell) i Linux

Vi antager et Debian/Ubuntu-miljø for omfanget af denne vejledning. Hvis du bruger en anden distribution, skal du udskifte de relevante kommandoer til din pakkehåndtering.

Lad os først installere pakken via apt:

$ sudo apt-get install dsh

Denne metode er for dem, der ikke bruger Debian, og som ønsker at kompilere den fra kilde-tjærebolde. Først skal 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

Derefter kompileres dsh og installeres.

# 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

Hovedkonfigurationsfilen "/etc/dsh/dsh.conf" (til Debian) og "/usr/local/etc/dsh.conf" (til Red Hat) er ret ligetil, men da rsh er en ukrypteret protokol, er vi vil bruge SSH som fjernskal. Brug denne teksteditor til at finde denne linje:

remoteshell =rsh

Og skift det til:

remoteshell =ssh

Der er andre muligheder, du kan give her, hvis du vælger at gøre det, og der er masser af dem at finde på dsh man-siden. For nu vil vi acceptere standardindstillingerne og se på den næste fil /etc/dsh/machines.list (til Debian).

For Red Hat-baserede systemer skal du oprette en fil kaldet "machines.list" i "/ usr/local/etc /" biblioteket.

Syntaksen her er ret let. Alt, hvad man skal gøre, er at indtaste en maskins legitimationsoplysninger (værtsnavn, IP-adresse eller FQDN) en pr. Linje.

Bemærk: Når du får adgang til mere end en maskine samtidigt, vil det bede dig om at konfigurere nøglebaseret adgangskodeløs SSH på alle dine maskiner. Dette giver ikke kun let adgang, men sikkerhedsmæssigt hærder det også din maskine.

Min fil “/etc/dsh/machines.list” eller “/usr/local/etc/machines.list” siger:

172.16.25.125
172.16.25.126

Når du har indtastet legitimationsoplysningerne for de maskiner, du ønsker at få adgang til, lad os køre en simpel kommando som \ "oppetid \" til alle maskinerne.

$ 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å hvad gjorde denne kommando?

Ret simpelt. Først kørte vi dsh og sendte “–a” -indstillingen til den, der siger at sende kommandoen “oppetid” til “ALLE” af de maskiner, der er anført i “/etc/dsh/machines.list“.

Derefter specificerede vi indstillingen “–M”, som siger at returnere “maskinnavnet” (specificeret i “/etc/dsh/machines.list”) sammen med output af kommandoen oppetid. (Meget nyttigt til sortering, når du kører en kommando på et antal maskiner.)

Indstillingen "–c" står for "kommando, der skal udføres" i dette tilfælde, "oppetid".

DSH kan også konfigureres med grupper af maskiner i filen "/ etc/dsh/groups /", hvor er en fil med en liste over maskiner i samme format som "/etc/dsh/machines.list" -filen. Når du kører dsh på en gruppe, skal du angive gruppenavnet efter “-g” -muligheden.

For Red Hat-baserede systemer skal du oprette en mappe kaldet "grupper" i mappen "/ usr/local/etc /". I den "grupper" -mappe opretter du en fil kaldet "cluster".

Kør f.eks. Kommandoen "w" på alle maskiner, der er anført i "klynge" -gruppefilen "/ etc/dsh/groups/cluster" eller "/ usr/local/etc/groups/cluster".

$ dsh –M –g cluster –c w

DSH giver meget mere fleksibilitet, og denne tutorial ridser kun overfladen. Bortset fra at udføre kommandoer kan DSH bruges til at overføre filer, installere software, tilføje ruter og meget mere.

For en systemadministrator, der har til opgave at ansvaret for et stort netværk, er det uvurderligt.