Как получить IP-адрес от $ SSH_CLIENT - PullRequest
10 голосов
/ 09 февраля 2010

$ SSH_CLIENT имеет IP-адрес с некоторой информацией о порте, и echo $ SSH_CLIENT дает мне '10 .0.40.177 52335 22 'и работает

if [ -n "$SSH_CONNECTION" ] ; then for i in $SSH_CLIENT do echo $i done fi

дает мне

  • 10.0.40.177
  • 52335
  • 22 * ​​1013 *

И я вижу, что первым элементом является IP-адрес.

В: Как я могу получить первый элемент $ SSH_CLIENT? $ {SSH_CLIENT [0]} не работает.

Ответы [ 5 ]

22 голосов
/ 09 февраля 2010
sshvars=($SSH_CLIENT)
echo "${sshvars[0]}"

или

echo "${SSH_CLIENT%% *}"
8 голосов
/ 09 февраля 2010

вы можете использовать set -- например

$ SSH_CLIENT="10.0.40.177 52335 22"
$ set -- $SSH_CLIENT
$ echo $1  # first "element"
10.0.40.177
$ echo $2  # second "element"
52335
$ echo $3
22
4 голосов
/ 17 мая 2013

Для строк, как в данном случае, можно использовать оператор <<<:

$ read ipaddress outport inport <<< $SSH_CLIENT

См. Например: Linux Bash: назначение нескольких переменных . Не делайте этого с двоичным вводом: Есть ли бинарный сейф <<< в bash? </a>

0 голосов
/ 16 июля 2015

Если вы предпочитаете awk:

$ SSH_CLIENT="10.0.40.177 52335 22"
$ echo $SSH_CLIENT|awk '{print $1}' # first element
10.0.40.177
$ echo $SSH_CLIENT|awk '{print $2}' # second element
52335
$ echo $SSH_CLIENT|awk '{print $3}' # third element
22
0 голосов
/ 28 июня 2014

Вы можете получить это программным способом через библиотеку ssh (https://code.google.com/p/sshxcute)

public static String getIpAddress() throws TaskExecFailException{
    ConnBean cb = new ConnBean(host, username, password);
    SSHExec ssh = SSHExec.getInstance(cb);
    ssh.connect();
    CustomTask sampleTask = new ExecCommand("echo \"${SSH_CLIENT%% *}\"");
    String Result = ssh.exec(sampleTask).sysout;
    ssh.disconnect();   
    return Result;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...