2025年Ubuntu16.04、22.04下xfce中使用expect在su时免密码输入切换到root账户

Ubuntu16.04、22.04下xfce中使用expect在su时免密码输入切换到root账户apt get install expect 比如我的密码是 appleyuchi 那么下面的 send 的地方就改成 appleyuchi 下面的文件保存为 suz sh 注意下面的内容必须在文件中置顶 这些内容的前面不能有空行或者其他内容 usr bin expect f spawn su expect Password

大家好,我是讯享网,很高兴认识大家。

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

 如果”密码“两字是繁体,那么上述脚本中也要改成繁体

小讯
上一篇 2025-02-15 17:16
下一篇 2025-03-17 11:34

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/14170.html