在ubuntu中不使用sudo的shell脚本

时间:2014-12-23 16:14:49

标签: linux git shell ubuntu vagrant

对于shell脚本来说是新手,我有一个执行以下命令的脚本,以便从Vagrant导出我的数据库:

export_folder="/var/www/projects/DatabaseBackup/local"

schema="wp"

tables="wp_8_options"

export_data="mysqldump -uroot -pmy-secret-password --opt $schema $tables > $file_name.sql"

sudo vagrant ssh --command "cd $export_folder && $export_data"

$export_folder Vagrant中的路径是否在我的主机文件夹中对应

$scema要从Vagrant mySql服务器导出的数据库

$tables要从所选架构中导出的表

$export_data导出数据的实际mysqldump命令

sudo vagrant ssh --command "..."指示Vagrant使用SSH以在Vagrant VM中执行另一个命令的命令

上面的所有代码,从shell脚本运行,直到现在它正常工作。我编写此脚本的原因是,当我使用Git挂钩在Git上提交某些内容时,自动执行数据库导出。

上述脚本的问题在于我无法通过Git挂钩运行它,因为它使用的是sudo

不幸的是,Vagrant需要sudo才能在我的计算机上运行。此外,您应该知道,我不是Vagrant专家,并且Vagrant已由另一位同事安装在我的计算机上,所以我不知道如何修改它以便在没有{的情况下运行{1}}。

此外,我并不关心这个脚本的安全性,因为它只能从我的计算机内部运行。

所以问题是,如何在不使用sudo命令的情况下运行此脚本。有什么选择?

1 个答案:

答案 0 :(得分:2)

在没有密码的情况下给自己sudo vagrant权力:

您的/ etc / sudoers文件必须包含该行

#includedir /etc/sudoers.d

必须使用visudo命令编辑/ etc / sudoers - 不要手动编辑它。

然后,sudo visudo -f /etc/sudoers.d/<username>并添加到该文件

<username> <hostname> = NOPASSWD: /usr/bin/vagrant