サーバーにSSHで接続し、特定のコマンドを使用してシステムの稼働時間を取得しようとしても機能しません。
これはほぼすべてのUNIXシステムでデフォルトで実行されます。
startuptime=`uptime | awk '{print $2,$3,$4,$5}'` && startuptime1=${startuptime%,} && startdayshours=${startuptime1%%:*}' Hours, ' && startminutes=${startuptime1##*:}' Minutes' && echo 'System Uptime -' $startdayshours$startminutes `date`
しかし、これはうまくいきません(エスケープ文字、$()、または「または」、「」、「」引用符などを変更/追加しても)
ssh user@server "startuptime=`uptime | awk '{print $2,$3,$4,$5}'`; startuptime1=${startuptime%,}; startdayshours=${startuptime1%%:*}' Hours, '; startminutes=${startuptime1##*:}' Minutes'; echo 'System Uptime -' $startdayshours$startminutes `date`"
PS:内部引用符をエスケープする必要があるため、引用符と一緒には機能しないことを知っていますが、これは単なる例です。ssh user@server command_goes_here
ベストアンサー1
コマンドにバックティックがあります。これはsshコマンドの前に実行されることを意味します。また、sshコマンド内で割り当てを実行しています。しかし、何もしませんでした。したがって、sshは決して未使用の開始時間変数にガベージを割り当てることができます。
実際には、リモートサーバーからのuptimeコマンドの出力です。その後、ネイティブのawkやその他のアイテムを介してパイプすることで、あなたが望むものを得ることができます。
ssh user@server uptime | awk '{print $2, $3, $4, $5}'
これがうまくいけば、残りのコマンドを追加できます。
あなたはこれを行うことができます
startuptime=$(ssh user@server uptime)
echo startuptime | awk '{print $2, $3, $4, $5}'
この削除値をローカルでさらに処理したい場合。