shell指令自带sudo密码

本文介绍了如何在Shell脚本中使用sudo命令并自动输入密码,以确保命令顺序执行。两种方法分别是:1) 使用管道将密码作为参数传递,如`echo 123|sudo -S python run.py`;2) 利用文本块输入重定向,如`sudo -S shxxx.sh<<EOF 123456 EOF`。这两种方法使得在不需要交互式输入密码的情况下执行需要sudo权限的命令成为可能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        希望在sh脚本文件中的shell指令中使用sudo命令,需要自动输入密码以确保顺序执行。有两种方式可以实现:

1、将密码以参数形式追加到脚本

使用管道:echo 密码 | sudo -S shell命令

        如,需要使用超级权限执行python脚本:sudo python run.py,密码:123。则shell指令可写为:

echo 123 | sudo -S python run.py

        -S表示将echo输出的标准流读取,作为输入密码。终端执行:man sudo,可查看-S作用。

         PS:密码为字符串时,用引号。如密码为:admin时,shell指令改为:

echo "admin" | sudo -S python run.py

 2、使用文本块输入重定向

sudo -S sh xxx.sh << EOF 
[password] 
EOF

        eg:

sudo -S sh xxx.sh << EOF 
123456 
EOF

说明:

        -S 参数是 sudo 命令的可选参数,用以接收标准的密码输入<< EOF 命令。

        在shell脚本中,通常将EOF与 << 结合使用,表示后续的输入作为子命令或子Shell的输入,直到遇到EOF为止,再返回到主Shell。

3、应用举例

        设置开机启动脚本(autoload.sh):

#! /bin/bash

# 1. 修改串口设备权限
sudo -S chmod 777 /dev/ttyTHS0 /dev/ttyTHS1 << EOF
1
EOF

# 新建终端,以sudo权限执行桌面auto_run.py文件
cd /home/ubuntu/Desktop
gnome-terminal -x bash -c "echo 1|sudo -S python auto_run.py"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jingbo1801

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值