对于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
命令的情况下运行此脚本。有什么选择?
答案 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