sudo 命令直接添加密码到脚本

一、问题

有些情况下,部分脚本命令需要获取管理员权限了执行:

sudo gem install fastlane

在一般情况下,需要等待你输入管理员密码以继续执行。如果你需要在 Jenkins 等需要自动化执行的脚本中时不可行的,此时就需要不输入密码来执行脚本。

二、解决方案

1、全局配置

参见免密码使用sudo和su

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

  • 使用管道
echo [password] | sudo -S gem install fastlane
  • 使用文本块输入重定向
sudo -S gem install fastlane << EOF 
[password]
EOF

三、知识补充

1、-S 参数

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

-S, --stdin                 read password from standard input

2、 << EOF 命令

在shell脚本中,通常将EOF与 << 结合使用,表示后续的输入作为子命令或子Shell的输入,直到遇到EOF为止,再返回到主Shell。
在上面的场景中,就是将‘password’当做命令的输入。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值