2014-11-09 2 views
1

Я пытаюсь написать сценарий для автоматизации подключения к различным удаленным экземплярам, ​​но мне трудно переносить результирующее имя хоста в качестве аргумента в ssh. Я в основном стараюсь сделать следующее:Как я могу передать имя хоста в вызов SSH?

echo "example.com" | xargs -I {} ssh {} 

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

echo "example.com" | xargs -0 ssh -t -t 

Конечной целью является, чтобы иметь возможность есть скрипт, который будет возвращать имя хоста/IPAddress, который затем может быть подключен к через SSH. Например:

my_random_script | ... ssh 
+0

Есть ли причина, по которой вы не хотите, чтобы простой сценарий оболочки обрабатывал это? – Joey

+0

У меня было старое решение, использующее скрипт оболочки, но я хочу, чтобы первая часть была через Python, так как мне было более комфортно с ней. Полагаю, я могу объединить их в сценарий оболочки, но, похоже, должен быть способ сделать это, используя комбинацию труб и xargs. Возможно, нет? –

ответ

4

Может быть, вы хотите запустить:

ssh `echo example.com` 
ssh `your_random_script` 

При вставке какую-либо команду в обратных кавычках, эта команда выполняется, и результат сохраняется в безымянной переменной. Для сохранения/повторного использования вы можете вызвать что-то вроде:

VAR=`your_random_script` 
ssh $VAR 
+0

Yea - Я знаю, что это работает, но первая часть возвращает динамическое имя хоста. Например, «random_script_that_returns_an_ip | xargs ..» –

+0

Но вместо эха вы можете запустить «ssh \' your_random_script \ '". – maxihatop

+0

Awesome - это сработало. Благодаря! Я полагаю, что обратные линии просто выполняют все между ними? Не стесняйтесь добавлять это как ответ, и я буду его продвигать/принимать. –

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