2016-08-08 66 views
1

Ich sshing in einen Server in einem Shell-Skript und einige Docker-Befehle ausführen. Einige der Befehle schlagen jedoch in der Docker-Version 1.7 fehl. Ich habe eine Korrektur für 1.7, aber es dauert viel länger, das Shell-Skript auszuführen, wenn ich es ständig benutze. Ich möchte also nach dieser Version suchen und wenn es 1.7 ist, auf das langsamere Skript zurückgreifen. Sonst lief die nette schnelle Version.in SSH-Shell-Skript überprüfen für Docker-Version

Denken etwas wie

if ssh -l root $1 "docker -v === '1.7.*'" 
then 
    echo "Docker version 1.7!" 
else 
    echo "Docker version not 1.7!" 
fi 

Offensichtlich ist dies nicht funktioniert. Irgendwelche Ideen?

Antwort

0

können Sie verwenden:

if [[ $(ssh -l root "$1" 'docker -v') == *" 1.7."* ]]; then 
    echo 'Docker version 1.7!' 
else 
    echo 'Docker version not 1.7!' 
fi 
  • Sie benötigen Ausgabe von ganzem ssh Kommando zu übernehmen mit dem Befehl Substitution $(...)
  • Shell unterstützt == oder = aber nicht ===
  • außerhalb des Zitats glob Zeichen halten
+1

danke! Das funktioniert wunderbar – user3455992

0

Docker verfügt über die Option -H, mit der Sie auf eine Docker-Engine auf einem anderen Host zeigen können. Verwenden Sie dies, um die Version zu erhalten und festzustellen, was ausgeführt werden soll.

if [[ $(docker -H my.host version | grep '1.7') ]]; then 
    Thing 1 
else 
    Thing 2 
fi