簡體   English   中英

從期望腳本調用 bash shell 腳本失敗:“沒有這樣的文件或目錄”

[英]Calling bash shell script from expect script fails : “no such file or directory”

我很難從我的期望腳本執行 bash shell 腳本。 我有一個期望腳本,如下所示,它更改了運行它的機器的 IP 地址。

#!/usr/bin/expect -f
set new_ipaddr [lindex $argv 0]
set password [lindex $argv 1]
set timeout 2

if {[llength $argv] != 2} {
  send_user "Usage: ./set_ip.sh ipaddress password\n"
  exit 1
}
spawn sudo nmcli con mod "Wired connection 1" ipv4.address $new_ipaddr/24

expect {
    password { send "$password\r"; exp_continue }
    timeout { send_user "\nFailed to get password prompt\n"; exit 1 }
}

send_user "setting Gateway\n"
spawn sudo nmcli con mod "Wired connection 1" ipv4.gateway 10.10.10.254

send_user "setting Static IP\n"
spawn sudo nmcli con mod "Wired connection 1" ipv4.method manual
spawn sudo nmcli con up "Wired connection 1"

spawn "./reboot.sh $password"

close

為了使其生效,機器需要重新啟動,因此我運行 bash 腳本來執行重新啟動。 reboot.sh 腳本執行失敗,報錯

couldn't execute "reboot.sh": no such file or directory
    while executing
"spawn reboot.sh $password"

reboot.sh 腳本位於主文件夾中,與運行腳本相同。 我也試過

spawn "~/./reboot.sh $password"

但仍然沒有什么不同。 權限設置正確,重啟腳本從命令行正確運行。 有人可以告訴我我做錯了什么嗎?

#!/usr/bin/expect -f
set new_ipaddr [lindex $argv 0]
set password [lindex $argv 1]
set timeout 2

if {[llength $argv] != 2} {
  send_user "Usage: ./set_ip.sh ipaddress password\n"
  exit 1
}
spawn sudo nmcli con mod "Wired connection 1" ipv4.address $new_ipaddr/24

expect {
    password { send "$password\r"; exp_continue }
    timeout { send_user "\nFailed to get password prompt\n"; exit 1 }
}

send_user "setting Gateway\n"
spawn sudo nmcli con mod "Wired connection 1" ipv4.gateway 10.10.10.254

send_user "setting Static IP\n"
spawn sudo nmcli con mod "Wired connection 1" ipv4.method manual
spawn sudo nmcli con up "Wired connection 1"

spawn ./reboot.sh "$password"
interact 

暫無
暫無

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

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