Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 在Shell脚本终端中实现自动化_Macos_Terminal_Expect_Shell - Fatal编程技术网

Macos 在Shell脚本终端中实现自动化

Macos 在Shell脚本终端中实现自动化,macos,terminal,expect,shell,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 {

天哪!关于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"
'

最后我找到了答案

如果您要将密码隐藏在expect脚本中,您可以1)将pmset更改为运行set user id,这样您就不必使用sudo,或者2)为自己提供对sudo的NOPASSWD访问权限,这样您就不必输入密码。任何一种方法都可以使您不必将密码存储在文件中。

发送“password\n”
不起作用。我现在在猜,所以我记下了我不准确的答案,你需要使用
放置“$passwd\n”
,你在研究中看到了吗,看起来很有希望。。。。另外,为shell添加一个标记,bash?你会更多地关注你的问题。祝你好运