在Shell脚本终端自动化

时间:2011-09-16 16:09:49

标签: macos terminal expect shell

天啊!我已经尝试过关于 expect 的一切。我想要做的是创建一个脚本,以便在更改为终端中的root时自动输入密码。我的代码看起来像这样

expect -i
spawn sudo pmset schedule sleep "{query}" expect { Password: send "password\r" }; interact;    
exit

结果

expect1.1> spawn sudo pmset schedule sleep "06/19/11 23:40:00" expect { Password: echo  "lovegun\r" }; interact; exit
spawn sudo pmset schedule sleep 06/19/11 23:40:00 expect  Password: send "password\r" 
Password:

我被困在密码中: 有人可以看看我的代码吗?这有什么问题。

expect -c '
  proc abort {} {
    puts "You have Authenticated\n"
    exit 1
  }
  spawn sudo pmset schedule sleep "{query}"
  expect {
    Password:        { send "password\n" }
    default          abort
  }
  puts "Finished OK\n"
'

最后我找到了答案

1 个答案:

答案 0 :(得分:2)

如果您要将密码隐藏在expect脚本中,您可以1)更改pmset以运行set-user-id,这样您就不必使用sudo,或2)给自己NOPASSWD访问权限sudo所以你不需要输入密码。无论哪种方式都可以使您不必将密码存储在文件中。