我想在脚本中编写脚本,我将执行许多需要 root 权限的命令,例如
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install eclipse
但我只想输入一次密码
我尝试在顶部写入
sudo su
以 root 身份运行,但它会停止脚本,所以我能做的就是输入密码
答案1
显而易见的解决方案:以 root 身份运行脚本
sudo /your/script
然后脚本中的所有命令都将以 root 身份运行。
如果某些命令不需要root,只需使用sudo
即可切换回普通用户
答案2
如果你有不需要的命令sudo
,你可以看看我的回答这个问题。
不过,为了简洁起见,这里有一个简短的答案:
#!/bin/bash
PW=$1
echo $PW | apt-get update
echo $PW | apt-get upgrade
echo $PW | apt-get install eclipse
运行bash file_name.bash sudo_pw
以这种方式传递的原因是人们不一定能分辨出您传递的参数意味着什么,因此即使有人以某种方式监视(甚至是从您身后偷看),它仍然是安全的。
我这样做的主要原因是,我使用 sudo 运行的大多数命令都会创建稍后需要操作的对象,而使用sudo command
通常会导致它们无法访问,即使我sudo next_command
。一个简单的例子是创建一个 Excel 文件并想用另一个进程来操作它。即使使用 运行sudo
,大多数时候,我也无法再次访问它,除非覆盖它,然后将其重新创建为无法访问的对象。
注意:这也可以作为一个 shell 脚本,因为语法中没有 BASH 特有的内容,所以如果您愿意的话,您可以使用#!/bin/sh
和来代替。./file_name.sh sudo_pw