2016-05-27 2 views
0

Я хотел бы подключиться через SSH и запустить команду при подключении. я выполнить следующую команду:Ssh и команда запуска при подключении

хостом SSH -t «команды»

, но мне нужно изменить некоторые переменные окружения для запуска команды и похоже Eval не работает ,

ssh host -t "eval `somescript.sh tcsh`; env | grep variables_that_should be_changed" 

Он просто не оценивает сценарий и говорит, что команда не существует «somescript.sh».

Возможно, на удаленном компьютере есть somescript.sh, а не тот, с которого он отправляется.

Есть ли способ решить эту проблему?

+0

Что вы подразумеваете под «Мне нужно изменить некоторые переменные env»? Нужно ли изменять эти переменные на основе условий в том месте, где вы являетесь SSHing * from *? То есть ваша настоящая потребность в предоставлении параметров скрипту, например 'ssh -t remotehost 'somescript.sh opt1 opt2 opt3" '? – ghoti

ответ

2

Установите параметры среды и выполните команду в том же скрипте и запустите этот сценарий поверх ssh. Переменные среды будут действительны до тех пор, пока ваш скрипт не будет существовать.

+0

работал, спасибо! –

0

Вы уже выбрали «лучший ответ», поэтому мой ответ просто помогает понять, что было не так.

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

ssh host -t "eval `somescript.sh tcsh`; env | grep variables_that_should be_changed" 

Если у вас есть кавычку (`...`) внутри двойных кавычек, они получают расширен за счет вызывающей оболочки, а не оболочки вы работаете на удаленном сервере. Таким образом, для вашей командной строки somescript.sh необходимо будет существовать локально, и вы будете использовать свою командную строку для встраивания вывода этого скрипта в удаленную консоль. Наверное, не то, что ты хочешь.

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

Кроме того, если вы используете обратные метки, замените их вместо $(...). Легче читать, быть вложенным и обычно считаться «лучшим способом» с современными раковинами.

+0

Благодарим вас за объяснение, что помогло мне много –

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