【发布时间】:2015-02-21 19:31:49
【问题描述】:
对 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 是由另一个同事安装在我的计算机上的,所以我不知道如何修改它以便在没有sudo 的情况下运行。
此外,我并不真正关心此脚本的安全性,因为它只会在我的计算机内部运行。
所以问题是,如何在不使用sudo 命令的情况下运行此脚本。有哪些选择?
【问题讨论】:
-
为什么 Vagrant 需要
sudo?我在 Ubuntu 上使用它,它在没有sudo的情况下工作。您是否以某种奇怪的方式安装它?或者可能最初将 Vagrant VM 创建为root? -
我真的不知道!! :) 我还没有安装它。它是由另一个同事安装的。我对 Vagrant 完全陌生。我知道的唯一想法是总是需要 sudo 来运行任何东西。我使用 sudo 进行 vagrant up、vagrant halt、vagrant ssh、....
-
可能存在一个使用“Vagrant”的组。这只是一个假设,我刚刚检查了 Vagrant 是什么,看起来像一个虚拟机(对吗?)。如果有流浪者团体,请与
cat /etc/group联系。如果是这样,请将您的用户添加到组中。 -
不,不存在。唯一存在的是
vboxusers:x:126:,它可能是用于 VirtualBox
标签: linux git shell ubuntu vagrant