2017-12-26 2 views
0
def ipadd = addr.hostAddress 
//println ipadd 
String myString = new Integer(ipadd); 
def pa = new ParametersAction([new StringParameterValue('IPADDR', myString)]); 
Thread.currentThread().executable.addAction(pa) 
println 'Script finished! \n'; 

시스템 변수에 추가하여 슬레이브의 IP 주소를 저장하려고하고 다음 작업으로 전달하려고합니다.하지만 작업을 실행할 때 예외 아래 점점 : 로그 :Jekins : System Groovy 스크립트의 java.lang.NumberFormatException

Slave Machine 2: X.X.X.X 
java.lang.NumberFormatException: For input string: "X.X.X.X" 
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 
    at java.lang.Integer.parseInt(Integer.java:580) 
    at java.lang.Integer.<init>(Integer.java:867) 

답변

0

ipadd를 정수로 변환 할 수 없습니다. 왜냐하면 그것은 유효한 정수가 아니기 때문입니다. 필자가 ipadd를 정수형으로 변환 할 필요는 없습니다. 그러므로 내 추천은 String myString = new Integer(ipadd) 행을 다음 행으로 대체하는 것입니다.

String myString = new String(ipadd) 
+0

그것은 매력처럼 작동했습니다. 감사 – Angel491

0

IPv4 주소는 3 점 포함되어 있으므로이 직접 Integer로 구문 분석 할 수 없습니다.

IP 32 비트를 나타내는 해당 int으로 변환하려고한다고 가정합니다. 다음과 같이 Java에서이 작업을 수행 할 수 있습니다.

public static int ipToInt32(String ip) { 
    Inet4Address ipAddress; 
    try { 
     ipAddress = (Inet4Address) InetAddress.getByName(ip); 
    } catch (UnknownHostException e) { 
     throw new IllegalStateException("Cannot convert IP to bits: '" + ip + "'", e); 
    } 
    byte[] ipBytes = ipAddress.getAddress(); 
    return ((ipBytes[0] & 0xFF) << 24) 
      | ((ipBytes[1] & 0xFF) << 16) 
      | ((ipBytes[2] & 0xFF) << 8) 
      | (ipBytes[3] & 0xFF); 
} 
관련 문제