如何在bash文件中提供密码以便在终端中执行

时间:2012-06-19 13:21:24

标签: file bash ubuntu

我在Ubuntu上安装了 wondershaper ,这是一个限制互联网速度的程序,我的意思是兄弟姐妹在我不在家时使用所有带宽,我的互联网是有限的,我想创建一个将在启动时运行的bash文件,意味着当他们打开计算机时,这些是我通常在终端中键入的代码

sudo wondershaper eth0 3 3
//It asks me for my password

The bash file will be something like this
#!/bin/bash
sudo wondershaper eth0 3 3

但是当他在终端上询问密码时,给他密码的代码是什么?没有我输入它?

2 个答案:

答案 0 :(得分:1)

正如其他人所说,将密码保留为纯文本是一个坏主意。最好让这个脚本以root身份运行,作为init脚本的一部分。

您的脚本依赖于sudo命令来获取临时超级用户权限。

不要让您的脚本在普通用户帐户上运行,而是在root帐户上运行它。然后,您无需为密码授予root权限。您将从/etc/init.d运行脚本,这是Ubuntu的启动脚本目录。您可能希望将其添加到预先存在的脚本,如rc.local(在所有其他init脚本运行后执行的文件)。

忽略脚本的sudo部分(例如sudo echo只变为echo),因为root不需要请求超级用户权限。就是这样!

你说你是Linux新手,所以这里有两个资源可以帮助你入门:

答案 1 :(得分:0)

你做不到。这是不安全的,因为你应该在文件中清楚地写密码。

您必须更改/ etc / sudoers才能让您的用户在没有密码的情况下使用sudo,请添加以下行:

$USER ALL=(ALL) NOPASSWD: /usr/bin/wondershaper

其中$ USER是您的用户名。

否则,您可以在/etc/init.d/rc.local上添加它,因此它将在启动时以root身份运行。