簡體   English   中英

linux期望sudo腳本將命令和參數視為命令

[英]linux expect sudo script treat command and argument as a command

我想編寫一個期望腳本來執行帶有參數的命令,我使用$ argv作為命令和參數來生成,但是不幸的是,期望似乎將整個命令和參數視為命令。 例如,如下代碼:

#!/usr/bin/expect --


set psw 123456

set timeout  360
spawn  /usr/bin/sudo $argv
expect {
             "*password*" {send "$psw\n"; exp_continue;}
             timeout { exec kill -9 [exp_pid]; close; }
    }

如果我執行期望sudo.ext crontab -l ,那么將發生一些錯誤:

spawn /usr/bin/sudo crontab -l
[sudo] password for jadd: 
sudo: crontab -l: command not found

我應該怎么做才能使腳本將crontab -l視為不是整個命令?

-------------------------------------------------- ---------------

更新答案:腳本在centos 6.5 x64和tcl版本8.5.7上運行,因此Dinesh回答:

eval spawn  /usr/bin/sudo $argv

要么

spawn /usr/bin/sudo {*}$argv

兩者都有效

如果使用的Tcl版本> = 8.5,則可以使用Argument擴展{*}

spawn /usr/bin/sudo {*}$argv

其他,

eval spawn /usr/bin/sudo $argv

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM