Shell-Script
期望腳本給出錯誤
在遠端機器上
./bin/show_info.py
,我想執行一個腳本並在本地機器上獲取輸出,為此我創建了一個帶有期望的腳本。如果我執行以下命令,它可以正常工作,但是當腳本中提到的相同時,它會出錯。
ssh IPaddress "./bin/show_info.py | grep total -A2 | grep -v ^+ | grep -v ^- | sed 's/total.*//g'" > Report_2017.txt
腳本錯誤
[root@centseven ~]# ./directconnect spawn echo -e > Report_2017.txt extra characters after close-quote while executing "spawn sh -c "ssh IPaddress "./bin/show_info.py | grep total -A2 | grep -v ^+ | grep -v ^- | sed 's/total.*//g'" > Report_2017.tx..." (file "./directconnect" line 6)
文件內容
#!/usr/bin/env expect set timeout 5 spawn echo -e > Report_2017.txt spawn sh -c "ssh IPaddress "./bin/show_info.py | grep total -A2 | grep -v ^+ | grep -v ^- | sed 's/total.*//g'" > Report_2017.txt" expect "Enter passphrase for key '/root/.ssh/id_rsa':" send "12345\r" expect "Enter passphrase for key '/root/.ssh/id_rsa':" send "12345\r" expect "Enter passphrase for key '/root/.ssh/id_rsa':" send "12345\r" expect "Password:" send "54321\r" interact
expect
在腳本中,雙引號是您的問題。spawn sh -c "ssh IPaddress "./bin/show_info.py |.. sed 's/total.*//g'" > Report_2017.txt"
請注意,由於 IPaddress 之後的雙引號結束,管道被暴露在外。
你可能想試試這個:
spawn sh -c "ssh IPaddress \"./bin/show_info.py |.. sed 's/total.*//g'\" > Report_2017.txt"