Java获取Linux服务器IP地址方法

在实际开发中,有时候我们需要获取Linux服务器的IP地址。本文将介绍如何使用Java程序获取Linux服务器的IP地址,并提供代码示例。

1. 获取本机IP地址

要获取本机IP地址,我们可以使用Java的InetAddress类。该类提供了一组静态方法来获取主机的网络地址。以下是获取本机IP地址的代码示例:

import java.net.InetAddress;

public class GetIPAddress {

    public static void main(String[] args) {
        try {
            InetAddress localHost = InetAddress.getLocalHost();
            String ipAddress = localHost.getHostAddress();
            System.out.println("本机IP地址:" + ipAddress);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

代码解析:

  1. 导入java.net.InetAddress类。
  2. main方法中,使用getLocalHost方法获取本机的InetAddress对象。
  3. 使用getHostAddress方法获取本机的IP地址。
  4. 打印本机IP地址。

运行以上代码,将输出本机的IP地址。

2. 获取远程Linux服务器IP地址

要获取远程Linux服务器的IP地址,我们可以使用Java的SSH连接库,如JSch。以下是获取远程Linux服务器IP地址的代码示例:

import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.ChannelExec;

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class GetRemoteIPAddress {

    public static void main(String[] args) {
        try {
            String host = "remote_server_ip";
            String user = "username";
            String password = "password";
            int port = 22;

            JSch jsch = new JSch();
            Session session = jsch.getSession(user, host, port);
            session.setPassword(password);
            session.setConfig("StrictHostKeyChecking", "no");
            session.connect();

            String command = "hostname -I";
            ChannelExec channelExec = (ChannelExec) session.openChannel("exec");
            channelExec.setCommand(command);

            BufferedReader reader = new BufferedReader(new InputStreamReader(channelExec.getInputStream()));
            channelExec.connect();

            String line;
            StringBuilder sb = new StringBuilder();
            while ((line = reader.readLine()) != null) {
                sb.append(line);
            }

            channelExec.disconnect();
            session.disconnect();

            String ipAddress = sb.toString().trim();
            System.out.println("远程服务器IP地址:" + ipAddress);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

代码解析:

  1. 导入JSch依赖库。
  2. 设置远程服务器的IP地址、用户名、密码和端口号。
  3. 创建JSch对象,建立与远程服务器的SSH连接。
  4. 设置StrictHostKeyChecking为"no",跳过SSH连接时的HostKey检查。
  5. 执行命令hostname -I获取服务器的IP地址。
  6. 读取命令执行的输出并保存到StringBuilder中。
  7. 关闭连接,获取服务器的IP地址,并打印。

运行以上代码,将输出远程Linux服务器的IP地址。

流程图

flowchart TD
    A[开始] --> B[获取本机IP地址]
    B --> C{是否获取远程服务器IP地址}
    C --> |是| D[获取远程服务器IP地址]
    C --> |否| E[结束]
    D --> E
    E --> F[结束]

类图

classDiagram
    class GetIPAddress {
        +main(String[] args)
    }
    class GetRemoteIPAddress {
        +main(String[] args)
    }

以上是获取Linux服务器IP地址的Java代码示例和相关说明。通过使用InetAddress类和SSH连接库,我们可以轻松获取本机和远程服务器的IP地址。希望本文能对你有所帮助!