後で使用するために、リモートsshpassコマンドの終了コードをローカルスクリプトの変数にどのように書き込むことができますか?
リモートでコマンドを実行するためにsshpassを使用しています。証明書ベースの認証が優れていることを知っていますが、これは私のシステムではないため、証明書ベースの認証を設定できません。
私の問題は、リモートコマンドの終了コードを私の変数$ errmにキャプチャできないことです。
私のコマンドは次のとおりです。
#!/bin/bash
sshpass -p $pass ssh -o StrictHostkeyChecking=no -t $user@$Hostip 'touch /does/not/exist.txt &>/dev/null errm=$?'
echo $errm
echo $errm
実際のパスまたは/does/not/exist.txtを指定しても何も表示されません。ただし、有効なパスを指定するとファイルがリモートで生成されるため、sshpassに関連するすべてが機能しますが、終了コードをキャプチャすることはできません。
ただし、これにより、リモートコマンドが実行されたときに少なくとも私のスクリプトは終了コードを表示しますが、前述のように同じスクリプトでさらに使用するために変数にキャプチャすることはできません。
sshpass -p $pass ssh -o StrictHostkeyChecking=no -t $user@$Hostip 'touch /does/not/exist.txt &>/dev/null && echo $? || echo $?'
問題は、私のスクリプトがローカルで実行されたときにリモートシステムで発生するエラーコードに関連しているようです! ?
答え1
私は自分で解決策を見つけました。
sshpass -p $passvar ssh -o StrictHostkeyChecking=no -t $uservar@$ItemHostIp 'touch /does/not/exist.txt &>/dev/null'; errm=$?