2014-02-10 5 views
1

В случае, когда я первый SSH на сервер, а затем выполнить команду, она выполняется успешноНе удается запустить команду шеф-соло через SSH

[email protected]:~# chef-solo -v 
Chef: 11.10.0 

Но когда я пытаюсь запустить его, как этот

ssh [email protected] -t -C "chef-solo -c /var/chef/solo.rb" 

Я получаю сообщение об ошибке:

bash: chef-solo: command not found 

Почему это происходит, и как я могу решить эту проблему?

+0

Являются ли ваши кулинарные книги управляющими '$ PATH'. Вполне вероятно, что 'chef-solo' был на вашем пути, а теперь нет. – sethvargo

+0

yep. Например, в solo.rb 'cookbook_path File.expand_path (« ../ cookbooks », __FILE __)' 'json_attribs File.expand_path (" ../ node.json ", __FILE __)' –

+0

Это не то, что я имею в виду. В целевой системе - любая из этих кулинарных книг, управляющих bash.rc или/etc/profile? – sethvargo

ответ

1

Это все еще вопрос $PATH и ssh - не шеф-повар. Интерактивные и неинтерактивные сеансы не обязательно имеют одинаковое значение для переменной $PATH. Описанная проблема ssh here on stackoverflow. Вы также можете проверить GNU bash manual, чтобы иметь более глубокое понимание (не) интерактивных и (не) логических оболочек. Чтобы сократить, решение может быть одним из следующих:

  1. Запустить шеф-повар, используя абсолютный путь. Вот как ваша команда может выглядеть следующим образом:
    • SSH [email protected] -t -C «/ USR/местные/рубин/бен/шеф-соло -c/вар/повар /solo.rb "
  2. Настройте файлы конфигурации .bash для загрузки той же переменной $PATH как для интерактивных, так и для неинтерактивных оболочек.

Примечание: Чтобы выяснить, что это абсолютный путь, войдите в машину через SSH и запустить which chef-solo (. Не знаю, как опытный вы с Linux Извините, если я недооценки свои знания)

+1

Вы были правы. Здесь я нашел более подробный ответ http://askubuntu.com/questions/121073/why-bash-profile-is-not-getting-sourced-when-opening-a-terminal. И в моей конкретной ситуации мне нужно удалить эту строку из '~/.bashrc'' # Если вы не работаете в интерактивном режиме, ничего не делайте [-z" $ PS1 "] && return' –

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