2017-01-25 13 views
0

Вот код:SSH: подключение .. казнить .. printenv SSH_CONNECTION .. показать только IP

command="ssh -p 2222 -t [email protected]$ip"; 
command2='"printenv SSH_CONNECTION;bash"' 
xfce4-terminal -x sh -c "$command $command2; bash" 

выход:

00.00.00.00 53011 10.245.0.225 2222 

первый пункт был мой IP. я переместил все числа с 0.
второй предмет .. возможно, ПИД или что-то в этом роде.
Третий элемент. Вероятно, облачные узлы называют «частным ip».
четвертый пункт .. порт ssh.

Я хочу только распечатать свой ip.
и не все другие вещи.

другими словами просто

00.00.00.00 

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

+0

Просто чтобы убедиться, что все дополнительные вызовы 'bash' необходимы: вы хотите, чтобы открыть новый терминал, который подключается к удаленному хосту , отображает там IP-адрес, а затем оставляет вас в удаленной оболочке, и когда вы выходите из * этой * оболочки, терминал остается открытым в локальной оболочке? – chepner

+0

См. Также [предыдущий вопрос 1] (https://stackoverflow.com/questions/41854287/ssh-echo-ssh-client-returns-empty-when-executed-on-initial-connect) и [предыдущий вопрос 2] (https://stackoverflow.com/questions/41858678/ssh-connect-execute-echo-ssh-connection-awk-print-1). –

+0

Значения, которые вы видите в 'SSH_CONNECTION', находятся в формате' sourceIP sourcePort destinationIP destinationPort'. Все, что вам нужно сделать, это заменить 'printenv SSH_CONNECTION' на' echo \ $ {SSH_CONNECTION %% *} '. – alvits

ответ

0

Попробуйте использовать AWK, например:

эхо «00.00.00.00 53011 10.245.0.225 2222 "| awk '{print $ 1}'

+0

У awk есть проблемы в 'command2 = '" printenv SSH_CONNECTION; bash "'' нужно много кавычек, я считаю. –

1

Подстановка параметров может использоваться для ограничения того, что SSH_CONNECTION расширяется до. (Там нет необходимости printenv, поскольку SSH_CONNECTION является допустимым идентификатором оболочки.)

command="ssh -p 2222 -t [email protected]$ip"; 
command2='"echo \${SSH_CONNECTION%% *};bash"' 
xfce4-terminal -x sh -c "$command $command2; bash" 
+0

Вам нужно сбежать: '\ $ {SSH_CONNECTION %% *}'. –

+0

Я так не думаю. Он не будет расширяться, потому что значение, присвоенное 'command2', находится в одинарных кавычках. Он также не будет расширяться при расширении '$ command2', поэтому удаленная оболочка должна увидеть' echo $ {SSH_CONNECTION %% *}; bash' в качестве команды. (Но вот почему я не пытаюсь передавать ad-hoc-скрипты в качестве аргументов 'ssh', не говоря уже о том, что вызов' ssh' сам является частью аргумента.) – chepner

+1

Ой, подождите, вы правы, потому что он * будет * расширяться на 'sh', прежде чем он запустит' ssh'. – chepner