2010-02-09 5 views
8

IP adresi almak nasıl $ SSH_CLIENT bazı liman bilgi ile IP adresine sahip ve echo $ SSH_CLIENT bana '10 .0.40.177 52335 22' ve bana

verir

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

Running verir

  • 10.0.40.177

Ve ilk öğenin IP adresi olduğunu görüyorum.

S: $ SSH_CLIENT öğesinin ilk öğesini nasıl alabilirim? $ {SSH_CLIENT [0]} çalışmıyor.

cevap

17
sshvars=($SSH_CLIENT) 
echo "${sshvars[0]}" 

ya: olgu burada olduğu gibi

echo "${SSH_CLIENT%% *}" 
+2

(benim gibi) ikincisi “parametre değiştirme” yapıyor. İşte bir referans: http://tldp.org/LDP/abs/html/parameter-substitution.html – notJim

8

Eğer <<< operatör kullanılabilir, iplerin için set -- örn

$ 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 
0

Sen alabilirsiniz bunun ssh kitaplığı (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; 
} 
0

Eğer awk tercih ederseniz aracılığıyla program yolu: clueless için

$ 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