apt-get install expect
比如我的密码是appleyuchi,那么下面的send的地方就改成appleyuchi
下面的文件保存为suz.sh(注意下面的内容必须在文件中置顶,这些内容的前面不能有空行或者其他内容)
#!/usr/bin/expect -f spawn su expect "Password:" send "appleyuchi\r" interact
讯享网
上面的意思是,spawn开个进程,用来模拟输入su
而expect指的是,在上面输入su后,终端会出现的字符串,可以看到下图中,输入su以后出现了“Password:”,所以expect中填写输入su以后会出现的字符串
chmod u+x /usr/bin/suz.sh
chmod 777 /usr/bin/suz.sh
好了,头疼的事情接下来要来了,很多人复制了网上的脚本后,改了改发现还是没法免输入密码,调试方法是:
使用expect suz.sh来运行这个脚本,而不是./suz.sh来运行脚本,因为前者会有更详细的报错信息
cp suz.sh /usr/bin
编辑~/.bashrc文件,在最后一行加入:
alias suz=/usr/bin/suz.sh
保存.bashrc并且关闭
最后关闭当前终端,重新开一个terminal,输入suz,效果如下:


另外一种情况,如果终端在su的时候是中文的,如图:

此时suz.sh需要修改如下:
讯享网#!/usr/bin/expect -f spawn su expect "密码: " send "appleyuchi\r\n" interact
注意上面"密码: "中的空格不能少,并且终端用的冒号格式也很特殊(冒号是半角还是圆角?根据自己情况来改写脚本),在suz.sh脚本中要保持高度一致才行。
对于ubuntu22.04,则需要修改如下:
#!/usr/bin/expect set username "appleyuchi" set password "appleyuchi" spawn sudo /usr/bin/su expect "$username 的密碼:" send "$password\n" interact

choose the first one,
and select Language as Chinese
效果如下:

--------------------------------------------------------------------------------------------------------------------------
下面是ubuntu23.04

讯享网#!/usr/bin/expect set username "appleyuchi" set password "appleyuchi" spawn sudo /usr/bin/su expect "$username 的密码:" send "$password\n" interact
如果”密码“两字是繁体,那么上述脚本中也要改成繁体
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/14170.html