Shell脚本自动输入密码
原创 生活处处有BUG 生活处处有BUG 2023-09-08 23:36 发表于广东 收录于合集 #实操18个 #linux10个方式一 使用 echo “密码” | (管道符)
使用场景: sudo 命令
在使用普通用户执行 root 命令时有时候会需要输入密码,并且在输入密码后一段时间不需要再次输入(但是不影响),这时候可以使用
echo "密码" | sudo 命令
demo
(base) xj@xjpc:~/tmp$ mkdir /home/tmp.txt
mkdir: cannot create directory ‘/home/tmp.txt’: Permission denied
(base) xj@xjpc:~/tmp$ echo 'king' | sudo mkdir /home/tmp.txt
方式二 expect
echo + 管道符不是什么时候都可以生效(比如我写的自动提交博客脚本最后需要输入我的服务器的 git 仓库密码就不生效,ssh也不生效),因此我们可以使用 expect 方法来执行。
image-20230817112646582demo
#!/usr/bin/expect
set timeout 30
spawn ssh -l xj 172.16.101.222
expect "password:"
send "king\r"
interact
这里的语句是这样的:
设置超时时间为30s spawn 是 expect 的起始语句,可以理解为从此处开始 spawn 后面的语句是执行 ssh 连接 expect:当发现password:这个字符串后,在后方输入send后面的内容 send:要输入的密码 interact:执行完留在远程控制台,不加这句执行完后返回本地控制台
这个只能放在一人shell脚本文件中,执行之后,控制台就是远程服务的控制台了。
我有个大胆的想法
小伙伴在平常有没有遇到以下这种情况:遇到技术难题时,网上教程一堆堆,优秀的很多,但也有很多是过时的,或者是copy来copy去,甚至错别字都没改。
我公众号的技术文章,都是亲自校验过的。至少可以保证在发文的一段时间,不会过时。如果你在实操过程中,有遇到问题,可以在同名公众号留言,免费解答,相互学习,相互成长^v^
往期精彩
收藏那么多python资料干嘛,这一本就够你从入门到入土了!
收录于合集 #实操 18个 上一篇MySQL如何定位慢查询的原因下一篇一篇教你Git从入门到精通 阅读 1478 生活处处有BUG 写留言 标签:tmp,Shell,echo,密码,expect,控制台,输入 From: https://www.cnblogs.com/cheyunhua/p/17703154.html