2016-11-12 3 views
6

Я пытаюсь передать простую команду машине бродяг.Vagrant ssh - команда не работает

vagrant ssh -c "mysql -u root -e'CREATE DATABASE testing';" 

db не создается. Вместо этого я просто «вошел в систему» ​​на бродячую машину через ssh.

То же самое происходит, когда я бегу

vagrant ssh -c "touch test.txt" 

Я также попытался с:

  • одинарные кавычки вокруг команды
  • --command вместо сокращенном -c

Любые идеи, что происходит ?

Редактировать

Я собираюсь распространять свой сценарий, и он собирается интегрировать мой сценарий с Homestead, поэтому не могу настроить бродячую конфигурацию.

Редактировать

Поскольку я использую Homestead пользователя и ПВт отличается. Это должно было быть

vagrant ssh -c "mysql -u homestead -psecret -e'CREATE DATABASE testing;'" 

не меняя вышеуказанный код, чтобы избежать путаницы с уже представленными ответами.

Но, тем не менее, это не решит проблему. То же самое происходит, как описано выше.

ответ

6

Это работает

vagrant ssh -- -t 'touch test.txt' 

Флаг -t создает псевдо-tty для использования в bash. Какой вариант ответа на этот вопрос.

Running remote commands after vagrant ssh

что объясняется более подробно здесь.

https://unix.stackexchange.com/questions/119894/single-command-to-login-to-ssh-and-run-program/119899#119899

+1

ДА !!! Это сработало. Спасибо, Кейт. Очень ценится –

0

Вы можете попробовать добавить эту команду в загрузочный файл, а затем использовать

vagrant provision 

.

Пример Vargant Файл

# -*- mode: ruby -*- 
# vi: set ft=ruby : 

Vagrant.configure(2) do |config| 
    config.vm.box = "ubuntu/trusty64" 

    config.vm.network "forwarded_port", guest: 8080, host: 8080 

    config.vm.provision :shell, path: "bootstrap.sh" 

    config.vm.provider "virtualbox" do |v| 
     v.memory = 1024 
    end 

    config.vm.synced_folder "./", "/vagrant", id: "vagrant-root", 
     owner: "vagrant", 
     group: "www-data", 
     mount_options: ["dmode=777,fmode=777"] 

end 

Пример bootstrap.sh, который создает базу данных Postgres с вашей командой в нем. Вы должны убедиться, что у вас установлены нужные пакеты mysql.

#!/usr/bin/env bash 

add-apt-repository ppa:ondrej/php5-5.6 
apt-add-repository ppa:chris-lea/redis-server 

apt-get update 

apt-get install -y --force-yes python-software-properties 

apt-get install -y --force-yes postgresql postgresql-contrib 

apt-get install -y --force-yes redis-server 
apt-get install -y --force-yes apache2 
apt-get install -y --force-yes php5 
apt-get install -y --force-yes php5-imagick 
apt-get install -y --force-yes php5-redis 
apt-get install -y --force-yes php5-mcrypt 
apt-get install -y --force-yes phppgadmin 
apt-get install -y --force-yes php5-gd 
apt-get install -y --force-yes php5-intl 
apt-get install -y --force-yes php5-sqlite 
apt-get install -y --force-yes php5-curl 
apt-get install -y --force-yes git 

if ! [ -L /var/www ]; then 
    rm -rf /var/www 
    mkdir /var/www 
    ln -fs /vagrant /var/www/vagrant-referron-com 
    # 
    sed -i "s#DocumentRoot /var/www/html#DocumentRoot /var/www#g" /etc/apache2/sites-available/000-default.conf 

fi 
sed -i "s#AllowOverride None#AllowOverride All#g" /etc/apache2/sites-available/000-default.conf 
sed -i "s#AllowOverride None#AllowOverride All#g" /etc/apache2/apache2.conf 


# copy the phppgadmin configuration 
cp -f /vagrant/development/postgres/phppgadmin /etc/apache2/conf.d/ 
cp -f /vagrant/development/postgres/phppgadmin.conf /etc/apache2/conf-enabled/ 
cp -f /vagrant/development/postgres/config.inc.php /etc/phppgadmin/ 

# create the postgres database and user 
sudo -u postgres createdb sometestdatabase 
sudo -u postgres psql -U postgres -d postgres -c "alter user postgres with password 'postgres';" 

# calling mysql to create your testing database. 
sudo mysql -u root -e 'CREATE DATABASE testing ;' 


# enable server to listen to port 8080 
cp -f /vagrant/development/ports.conf /etc/apache2/ 

# install the other apache modules 
a2enmod rewrite 
php5enmod mcrypt 


apachectl restart 
+0

Спасибо, за это, но я планирую распространять свой сценарий и не может быть баловаться с vagrantfiles. Я пытаюсь интегрироваться с усадьбой. Спасибо хоть. К сожалению, моя ошибка не указана –

0

пытаются напрямую использовать SSH вместо бродяги:

ssh vagrant -c 'your command' 

вам также, вероятно, необходимо определить бродячего хозяина в вашем ~/.ssh/config

Host vagrant 
    HostName 127.0.0.1 
    User vagrant 
    Port 2222 
    IdentityFile ~/.vagrant.d/insecure_private_key 
    UserKnownHostsFile /dev/null 
    StrictHostKeyChecking no 
    PasswordAuthentication no 
    IdentitiesOnly yes 
    LogLevel FATAL 
    ForwardAgent yes 

 Смежные вопросы

  • Нет связанных вопросов^_^