2014-11-20 2 views
2

Я ищу, чтобы сделать что-то вроде следующей работы в однострочной оболочке.Как передать результат локального `curl` в командной строке на удаленный сервер в одной строке?

curl -s icanhazip.com | ssh [email protected] 'php /path/to/script.php "[PASS_IP_HERE]"' 

Мне нужно передать местный IP-адрес удаленному серверу, предпочтительно в одной строке.

Сегодня я делаю это так:

curl -s icanhazip.com // manually copy result 
ssh [email protected] 'php /path/to/script.php "[PASTE_RESULT_HERE]"' 

Предполагая, что локальный IP является 1.2.3.4, и удаленный IP является 5.6.7.8, то желаемый результат ближе к:

> curl -s icanhazip.com 
1.2.3.4 
> ssh [email protected] 'php /path/to/script.php "1.2.3.4"' 
//   How can I pass this dynamically? ---^ 

ответ

1

Вы можете использовать подстановку команд:

ssh -t [email protected] "php /path/to/script.php $(curl -s icanhazip.com)" 
+0

Ничего себе. Я решил, что подстановка команды будет выполняться на удаленном сервере в вашем примере. Поэтому, если мой локальный IP был «1.2.3.4», а мой удаленный IP был «5.6.7.8», вы говорите, что подстановка команды передала бы «php /path/to/script.php» 1.2.3.4 «» на удаленный сервер? Круто. – Ryan

+0

Я не пытался подменить команду, потому что я ожидал, что он передаст IP-адрес удаленного сервера вместо локального IP-адреса. Результат в php /path/to/script.php 5.6.7.8 "' (если '5.6.7.8' был IP-адресом удаленного сервера). – Ryan

+0

Я еще не тестировал его. Что вы порекомендуете? – Ryan

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