CentOS verwendet expect, um Skripte und Befehle remote in Stapeln auszuführen

CentOS verwendet expect, um Skripte und Befehle remote in Stapeln auszuführen

Manchmal müssen wir Server stapelweise bedienen, z. B. eine Datei auf den Server hochladen, Software installieren, einen Befehl und ein Skript ausführen, Dienste neu starten, Server neu starten usw. Wenn wir sie einzeln manuell bedienen, ist das sehr umständlich und eine Verschwendung von Arbeitskraft.

Zu diesem Zeitpunkt können wir expect verwenden, um Anweisungen an den Zielserver zu senden und Batch-Operationen zu implementieren.

Das folgende Beispiel kopiert eine Datei auf CentOS stapelweise zu anderen Dienstanbietern und führt den entsprechenden Befehl aus

1. Installieren Sie expect auf centos

yum installieren erwarten

2. Schreiben Sie das erwartete Skript copyfilebatch.sh

Das folgende Skript kopiert eine rc.local-Datei auf die Server mit den Intranet-IP-Adressen 192.168.0.102 bis 192.168.0.112. Führen Sie nach erfolgreichem Kopieren den Befehl chmod aus, um die Server jeweils neu zu starten.

#!/usr/bin/expect -f
Passwort festlegen Root-Passwort

für {set i 102} {$i <= 112} {incr i} {
  setze IP "192.168.0.$i"
  setzt "$ip"


  spawn ssh -o StrictHostKeyChecking=no $ip
  Zeitüberschreitung 3 festlegen
  Erwarte „root@$ip’s Passwort:“
  Zeitüberschreitung 3 festlegen
  sende "$password\r"
  Zeitüberschreitung 3 festlegen
  sende "exit\r"


  spawn scp /home/install/rc.local root@$ip:/etc/rc.d/rc.local
  Zeitüberschreitung 3 festlegen
  Erwarte „root@$ip’s Passwort:“
  Zeitüberschreitung 3 festlegen
  sende "$password\r"
  Zeitüberschreitung 3 festlegen
  sende "exit\r"




  SSH-Root@$IP erzeugen

  erwarten {
  "*ja/nein" { sende "ja\r"; exp_weiter}
  "*Passwort:" { sende "$passwort\r" }
  }
  erwarten "#*"

  #Auszuführender Befehl: sende "chmod +x /etc/rc.d/rc.local\r"
  sende "reboot\r"
  sende "exit\r"
  Erwarte EOF
}

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Lösung für die Meldung „Syntaxfehler: Unerwartetes Dateiende“ beim Ausführen eines .sh-Skripts in CentOS7
  • Verwenden Sie crontab, um das Skript zur regelmäßigen Ausführung des JAR-Programms in centOS6 auszuführen
  • CentOS 6.5-Konfiguration: SSH-Anmeldung ohne Schlüssel zur Ausführung des PSSH-Befehls – Erläuterung
  • So führen Sie geplante PHP-Aufgaben in CentOS7 aus
  • Detaillierte Erläuterung der Verwendung von crontab zum regelmäßigen Ausführen von Aufgaben unter CentOS 7
  • Beheben Sie das Problem, dass /etc/rc.local beim Starten von centos7 nicht ausgeführt wird
  • So richten Sie eine geplante Aufgabe ein, um ein bestimmtes Skript in CentOS auszuführen

<<:  Beispielanalyse der MySQL-Benutzerrechteverwaltung

>>:  Lernen Sie, wie Sie Uniapps und Miniprogramme (Bilder und Text) untervergeben

Artikel empfehlen

Vue3 AST Parser-Quellcode-Analyse

Inhaltsverzeichnis 1. Generieren Sie einen abstra...

So unterstützen Sie vollständiges Unicode in MySQL/MariaDB

Inhaltsverzeichnis Einführung in utf8mb4 Fehler b...

Detaillierte Erklärung von Objektliteralen in JS

Inhaltsverzeichnis Vorwort 1. Setzen Sie den Prot...

Diskussion zum Problem verstümmelter Zeichen in Iframe-Seitenparametern

Ich bin auf ein sehr ungewöhnliches Problem mit ve...

Reines CSS-Dropdown-Menü

Ergebnisse erzielen Implementierungscode html <...

CentOS6.8 verwendet cmake zur Installation von MySQL5.7.18

Unter Bezugnahme auf die Online-Informationen hab...

Softwaretests – MySQL (VI: Datenbankfunktionen)

1.MySQL-Funktionen 1. Mathematische Funktionen PI...

Eine umfassende Analyse der Möglichkeiten von Nginx

Vorwort Dieser Artikel konzentriert sich nur dara...

Der Unterschied und die Verwendung von json.stringify() und json.parse()

1. Unterschiede zwischen JSON.stringify() und JSO...

Lösung für den Apache-Cross-Domain-Ressourcenzugriffsfehler

In vielen Fällen platzieren große und mittelgroße...

So stellen Sie den Node.js-Dienst mithilfe von Dockerfile bereit

Dockerfile initialisieren Angenommen, unser Proje...