如何获取安装在使用Java的IP地址已知的机器上的操作系统信息和数据库?

如何获取安装在使用Java的IP地址已知的机器上的操作系统信息和数据库?,java,database,operating-system,Java,Database,Operating System,我将创建一个工具,显示机器的操作系统和数据库相关信息。我有一台机器的IP地址/主机名。使用该机器的IP地址/主机名,我想获得操作系统和数据库的相关信息 我需要数据库的信息(如Oracle、MySQL、SQL Server…),而不需要实际连接到数据库 是否有任何库可用于获取此信息。好的,一些基本操作系统信息可在中找到 至于查找活动数据库,您可以使用一些流行的JDBC库尝试连接到默认端口,并根据“拒绝连接”错误和“无效登录”错误推断它们的存在,但这只会让您了解到这一点,特别是当它们正在侦听非默认端

我将创建一个工具,显示机器的操作系统和数据库相关信息。我有一台机器的
IP地址/主机名。使用该机器的
IP地址/主机名
,我想获得操作系统和数据库的相关信息

我需要数据库的信息(如Oracle、MySQL、SQL Server…),而不需要实际连接到数据库


是否有任何库可用于获取此信息。

好的,一些基本操作系统信息可在中找到

至于查找活动数据库,您可以使用一些流行的JDBC库尝试连接到默认端口,并根据“拒绝连接”错误和“无效登录”错误推断它们的存在,但这只会让您了解到这一点,特别是当它们正在侦听非默认端口或域套接字时。您还可以在文件系统中搜索安装文件夹,或在Windows注册表中搜索指示安装键,并通过这种方式推断它们的存在


但归根结底,在一个未知的系统上,如果没有提升的(管理员)访问权限,您可以发现的东西就只有这么多了。

好吧,一些基本的操作系统信息可以在中找到

至于查找活动数据库,您可以使用一些流行的JDBC库尝试连接到默认端口,并根据“拒绝连接”错误和“无效登录”错误推断它们的存在,但这只会让您了解到这一点,特别是当它们正在侦听非默认端口或域套接字时。您还可以在文件系统中搜索安装文件夹,或在Windows注册表中搜索指示安装键,并通过这种方式推断它们的存在

但最终,在一个未知系统上,如果没有提升的(管理员)访问权限,您可以发现的东西就只有这么多。

有关数据库信息 您需要导入这个java.sql.DatabaseMetaData

Connection conn = getConnection();

DatabaseMetaData mtdt = conn.getMetaData();
System.out.println("DBMS name: " + mtdt.getDatabaseProductName());
System.out.println("DBMS version: " + mtdt.getDatabaseProductVersion());
System.out.println("Driver name: " + mtdt.getDriverName());
获取操作系统信息

System.out.println("\nName of the OS: " + System.getProperty("os.name"));
System.out.println("Version of the OS: " +   System.getProperty("os.version"));
System.out.println("Architecture of THe OS: " + System.getProperty("os.arch"));
数据库信息 您需要导入这个java.sql.DatabaseMetaData

Connection conn = getConnection();

DatabaseMetaData mtdt = conn.getMetaData();
System.out.println("DBMS name: " + mtdt.getDatabaseProductName());
System.out.println("DBMS version: " + mtdt.getDatabaseProductVersion());
System.out.println("Driver name: " + mtdt.getDriverName());
获取操作系统信息

System.out.println("\nName of the OS: " + System.getProperty("os.name"));
System.out.println("Version of the OS: " +   System.getProperty("os.version"));
System.out.println("Architecture of THe OS: " + System.getProperty("os.arch"));

但是,对于上面的数据库代码,您需要首先连接到数据库。如果您试图找出计算机上安装了哪些数据库服务器,则需要执行其他操作。请查看更新的问题。我表达的问题没有什么不同。以上是实际需求。但是,对于上面的数据库代码,您需要先连接到数据库。如果您试图找出计算机上安装了哪些数据库服务器,则需要执行其他操作。请查看更新的问题。我表达的问题没有什么不同。以上为实际需求,请参见更新后的问题。我表达的问题没有什么不同。以上为实际需求,请参见更新后的问题。我表达的问题没有什么不同。以上是实际要求。