Ksh / Bash-Skript zum Ausführen von Befehlen basierend auf dem Kernelnamen

321
Stan K

Ich versuche, ein Skript zu erstellen, das alle Hostnamen aus einer Datei übernimmt und je nach Kernel verschiedene Befehle ausführt.

Ich mag zunächst auf den Host - Rechner ssh und nach einer Ausgabe von uname -aBefehl Ich möchte in Abhängigkeit von der OS - Version einen bestimmten Satz von Befehlen senden mit Fall

Was ich bisher gemacht habe:

#!/usr/bin/ksh  for ssh_host in $(cat hostsFile) do echo $ssh_host kernel=`ssh $ssh_host "uname -a"` echo $kernel  case $kernel in "Linux") echo "This is Linux" ;;  "AIX") echo "This is AIX" ;; *) echo "Not sure what this is" ;; esac done 

Ich stecke fest, wo ich überprüfen sollte, ob die Zeichenfolge "Linux" in der uname -aAusgabe der $ -Kernel-Variablen enthalten ist.

1
Haben Sie "uname -o" ausprobiert? Auch "uname -s" gibt direkt den Namen des Kernels an. C0deDaedalus vor 6 Jahren 0

1 Antwort auf die Frage

1
glenn jackman

Sie müssen lediglich Ihre Muster weniger genau machen: Suchen Sie das Wort irgendwo im Text

case $kernel in *Linux*) echo "This is Linux" ;; *AIX*) echo "This is AIX" ;; *) echo "Not sure what this is: $kernel" ;; esac 

Sie können auch spezifischer sein, zumindest mit GNU uname

$ uname -s Linux 

Sie müssen auf der AIX-Uname-Manpage nachsehen, ob dort dieselbe Option verfügbar ist.

Die $ kernel-Variable wird ungefähr wie folgt aussehen: ** Linux boxName3.10.0-514.el7.x86_64 # 1 SMP Di Nov 22 16:42:41 UTC 2016 x86_64 x86_64 x86_64 GNU / Linux ** - Sind Sie sicher, dass dies funktionieren wird? In Bezug auf die uname -s gibt es kein solches Argument unter AIX, daher würde ich lieber uname -a verwenden, da jedes * Unix-System das weiß. Stan K vor 6 Jahren 0
Ja, es wird funktionieren. Hast Du es versucht? glenn jackman vor 6 Jahren 0