Linux
通過 ssh 從另一台伺服器獲取此命令的輸出
我正在嘗試 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
您的命令中有反引號。這意味著它們在 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}'
如果您想在本地對該刪除值進行進一步處理。