Qt5アプリケーション内に、他のリモートマシン(SSHで接続)上の特定のファイルのバージョン番号をチェックするために実行されるbashスクリプトがあります。
このスクリプトを実行できるマシンは100台以上あります。 sshedしたマシンに、探しているファイルがある場合、スクリプト出力は適切に表示されますが、リモートマシン上のファイルが存在しない場合、2行が結合されます。
例えば
次のようになります。
Operating System: 1.5.64
sw_install: 1.16
Kate 1.1
しかし、リモートファイルが存在しない場合は
Operating System: sw_install
Kate: 1.1
リモートファイルが存在しない場合(発生した場合)に行を分離するためのアイデア。ファイルが存在する場合、出力は望ましい外観ではないため、2つのsshコマンドの間に「echo」行を挿入する(または-nを削除する)だけでは不十分です。
本当に簡単な答えがあることを願っています。
ご助力ありがとうございます!!
echo -n "Operating System: "
ssh -t -o LogLevel=QUIET -o '''StrictHostKeyChecking no''' $NODENAME "cat /home/user/Version.txt"
echo -n "sw_intall: "
ssh -t -o LogLevel=QUIET -o '''StrictHostKeyChecking no''' $NODENAME "grep VERSION= /home/user/sw_install | cut -d'=' -f2 | tr -d '\"' | head -1"
ssh -t -o LogLevel=QUIET -o '''StrictHostKeyChecking no''' $NODENAME "rpm -qv kate --qf \" Kate: %{VERSION}.%{RELEASE}\""
Centos 7.2
Catをtr -d '\n'
にパイプし、コマンドの後に明示的に改行を追加することができます。
echo
はまったく使用しないでください。 printf
を使用して、改行を明示的に追加します。これを変える:
echo -n "Operating System: "
ssh -t -o LogLevel=QUIET -o '''StrictHostKeyChecking no''' $NODENAME "cat /home/user/Version.txt"
echo -n "sw_intall: "
ssh -t -o LogLevel=QUIET -o '''StrictHostKeyChecking no''' $NODENAME "grep VERSION= /home/user/sw_install | cut -d'=' -f2 | tr -d '\"' | head -1"
ssh -t -o LogLevel=QUIET -o '''StrictHostKeyChecking no''' $NODENAME "rpm -qv kate --qf \" Kate: %{VERSION}.%{RELEASE}\""
これに:
os=$(ssh -t -o LogLevel=QUIET -o '''StrictHostKeyChecking no''' $NODENAME "cat /home/user/Version.txt")
swInstall=$(ssh -t -o LogLevel=QUIET -o '''StrictHostKeyChecking no''' $NODENAME "grep VERSION= /home/user/sw_install | cut -d'=' -f2 | tr -d '\"' | head -1")
kate=$(ssh -t -o LogLevel=QUIET -o '''StrictHostKeyChecking no''' $NODENAME "rpm -qv kate --qf \" Kate: %{VERSION}.%{RELEASE}\"")
printf 'Operating System: %s\nsw_intall: %s\nKate: %s\n' "$os" "$swInstall" "$kate"
または、ヒアドキュメントを使用します。
cat<<EoF
Operating System: $(ssh -t -o LogLevel=QUIET -o '''StrictHostKeyChecking no''' $NODENAME "cat /home/user/Version.txt")
sw_install: $(ssh -t -o LogLevel=QUIET -o '''StrictHostKeyChecking no''' $NODENAME "grep VERSION= /home/user/sw_install | cut -d'=' -f2 | tr -d '\"' | head -1")
Kate: $(ssh -t -o LogLevel=QUIET -o '''StrictHostKeyChecking no''' $NODENAME "rpm -qv kate --qf \" Kate: %{VERSION}.%{RELEASE}\"")
EoF