,可以通过以下步骤实现:
import subprocess
def scan_ports(ip):
# 使用nmap扫描目标主机的开放端口
result = subprocess.run(['nmap', '-p', '22', ip], capture_output=True, text=True)
output = result.stdout
# 解析nmap输出,提取开放的SSH端口
open_ports = []
lines = output.split('\n')
for line in lines:
if '/tcp' in line and 'open' in line:
port = line.split('/')[0]
open_ports.append(port)
return open_ports
def connect_ssh(ip, port, username, password):
# 使用ssh连接到目标主机
command = f'sshpass -p {password} ssh -p {port} {username}@{ip}'
subprocess.run(command, shell=True)
# 主程序
if __name__ == '__main__':
target_ip = '目标主机IP'
target_username = '目标主机用户名'
target_password = '目标主机密码'
open_ssh_ports = scan_ports(target_ip)
if len(open_ssh_ports) > 0:
print(f"目标主机 {target_ip} 开放的SSH端口:{', '.join(open_ssh_ports)}")
for port in open_ssh_ports:
connect_ssh(target_ip, port, target_username, target_password)
else:
print(f"目标主机 {target_ip} 没有开放的SSH端口")
scan_ports
函数使用nmap扫描目标主机的开放端口。将目标主机的IP作为参数传递给scan_ports
函数,并指定要扫描的端口号(例如22是SSH的默认端口)。scan_ports
函数使用subprocess
模块运行nmap命令,并捕获输出。然后解析输出,提取开放的SSH端口,并将其存储在open_ports
列表中。connect_ssh
函数与目标主机建立SSH连接。connect_ssh
函数使用subprocess
模块运行ssh命令,通过sshpass
工具提供密码,并使用目标主机的用户名、密码和端口号进行连接。请注意,这只是一个简单的示例脚本,你可以根据实际需求进行修改和扩展。在实际应用中,建议使用更安全的身份验证方式,如SSH密钥对。此外,还可以添加错误处理和日志记录等功能,以提高脚本的稳定性和可靠性。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云