Ich habe viele Kombinationen ausprobiert, aber keine davon hat funktioniert, und jetzt sind meine Ideen erschöpft.
Meine Absicht ist es also, Zeit vom geplanten at-job zu bekommen und eine weitere AT-job eine halbe Stunde vorher zu machen. Führen Sie diesen Befehl in der for-Schleife auf vielen Computern aus.
Ich bin so weit gegangen, aber das macht den AT-Job im Quell-Linux, nicht im Ziel:
ssh linuxserver atq | awk '{print ($3), $2}' | { read time; date -d "$time -30 min" "+%H:%M %F" ; } | { read time2; echo "yum upgrade -y" | at "$time2" ; }
Dann bin ich sicher, dass die for-Schleife das Zitieren erschwert, aber ich kann es nicht testen, bevor ich diesen vorherigen Befehl zum Laufen bringen kann. Ich würde dann for-loop wie folgt verwenden:
for loop in $(cat /tmp/names)
do
ssh $loop atq | awk '{print ($3), $2}' | { read time; date -d "$time -30 min" "+%H:%M %F" ; } | { read time2; echo "yum upgrade -y" | at "$time2" ; }
done
Irgendwelche Ideen?
linux
command-line
ssh
remote
Okkim
quelle
quelle
Antworten:
Wenn Sie Zugriff auf haben
bash
, können Sie dasprintf '%q\n' "$command"
Muster verwenden, um einen gültigen Befehl abzurufen. Erstellen Sie zunächst einen gültigen lokalen Befehl wie folgt:Nun legt es in eine Variable , so dass , wenn Sie genau die gleiche Ergebnis erhalten wider. Der einfachste Weg, dies zu tun, ist die Verwendung von einfachen Anführungszeichen, wo immer dies möglich ist, und doppelten Anführungszeichen, wo immer dies erforderlich ist ( nur zum Umbrechen von einfachen Anführungszeichen):
Sie können überprüfen, ob diese identisch sind mit
diff
:Drucken Sie das jetzt aus, damit Sie es in einen
ssh
Befehl einfügen können :Hässlich, aber es funktioniert.
quelle
Mit Ihrem Befehl wird nur der
atq
Befehl auf dem Remote-Computer ausgeführt. Sie müssen nur eine lange Befehlszeile in einfachen Anführungszeichen übergeben:Es gibt jedoch einfache Anführungszeichen in Ihrer Befehlszeile, sodass Sie sie folgendermaßen umgehen können:
Das Ergebnis wäre also:
quelle
Versuchen Sie nicht, mit der
ssh hostname command arg1 arg2 ... argN
Syntax zu schlau zu sein . Erstellen Sie ein Shell-Skript auf dem Remote-Host und lassen Sie es die Arbeit erledigen, anstatt Ihren Mitarbeitern die Augen vor dem Zitieren zu verbrennen. Dh:quelle