Windows通过Python登录Linux服务器 ----SSH

Windows通过Python登录Linux服务器 —-SSH

最近由于工作需要,要通过Python登录Linux服务器,并进入到特定的目录,运行脚本生成一个文件,然后把文件取回本地,服务器为了安全,没有开户Telnet服务,所以只能通过SSH进行登录
直接贴代码,下面再解释:
#!/usr/bin/python
import paramiko
import os

#当前脚本路径
CUR_PATH = os.path.dirname(__file__)

#服务器ip
Host='192.168.1.XXX'
Port=22
#登录用户名
Username='XXX'
#登录密码
Password='XXX'
#登录服务器后执行的命令
Command = ['cd xxxx; ./xxxx.sh']
#本地PC路径
WinPath = CUR_PATH + '\\file_name'
#服务器上的路径
LinuxPath = '/path/file_name'

def ssh_exec_cmd(command):
    '''SSHA远程登录:Windows客户端连接Linux服务器,并输入指令'''

    #登录服务器
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect(Host, Port, Username, Password)

    #执行命令
    for i in range(len(command)):
        send_str = command[i] + '\n'
        stdin, stdout, stderr = ssh.exec_command(send_str)
        err = stderr.readlines()
        out = stdout.readlines()
        if (err):
            print ('error:')
            print (err)
            #print (out)
        else:
            print (out)

    #执行完毕,终止连接
    ssh.close()

def ssh_linux_to_win(linuxpath, winpath):
    '''从Linux服务器下载文件到本地

    Args:
        linuxpath: 文件在服务器上的路径及名字
        winpath: 文件下载到本地的路径及名字

    '''

    client = paramiko.Transport((Host, Port))
    client.connect(username=Username, password=Password)
    sftp = paramiko.SFTPClient.from_transport(client)

    sftp.get(linuxpath, winpath)
    client.close()
    print ('DownLoad file finished!')

def ssh_win_to_linux(winpath, linuxpath):
    '''从windows向linux服务器上传文件

    Args:
        winpath: 要上传的文件在本地的路径及位置
        linuxpath: 文件要上传至服务器的路径及名字
    '''

    client = paramiko.Transport((Host, Port))
    client.connect(username=Username, password=Password)
    sftp = paramiko.SFTPClient.from_transport(client)

    sftp.put(winpath, linuxpath)
    client.close()
    print ('UpLoad file finished!')


if __name__=='__main__':
    ssh_exec_cmd(Command)
    #ssh_exec_cmd()
    #ssh_linux_to_win(LinuxPath, WinPath)
    #ssh_win_to_linux(WinPath, LinuxPath)
所需工具:
    Python3.4
    paramiko模块
        需要下载三个文件进行安装才能用:
        1、安装pyCrypto
        http://www.voidspace.org.uk/python/modules.shtml#pycrypto
        2、安装ecdsa
        https://pypi.python.org/pypi/ecdsa/0.9
        3.安装paramiko
        https://github.com/paramiko/paramiko#,
        安装步骤同ecdsa

这是我整理的python3.4.0安装包及以上所说的三个模块的安装包,可直接下载使用

你可能感兴趣的:(Python)