【问题标题】:How do I start an SSH session locally using Python?如何使用 Python 在本地启动 SSH 会话?
【发布时间】:2015-08-17 01:00:15
【问题描述】:

我要问的是,如果我在系统“A”(Linux)上并且我想通过 ssh 进入系统“B”(Windows):在系统“A”上,我可以执行 ssh admin@xx.xx .xx.xx 将提示我输入密码,当它通过身份验证时,我将进入系统“B”的“$”(在系统“A”上)。

  1. 如何将用户名和密码一起发送为一行(因为我想使用脚本)
  2. 如何实现我上面的场景。

【问题讨论】:

    标签: python ssh passwords


    【解决方案1】:

    我一般用 Paramiko 做,比较简单

    import paramiko
    
    # ssh 
    print 'enter ssh'
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # this will automatically add the keys
    ssh.connect(machineHostName, username=user, password=password)
    
    # Run your commands
    # example 1 : ls command
    print 'do a ls command'
    stdin, stdout, stderr = ssh.exec_command('ls')
    print stdout.readlines()
    time.sleep(2)
    # example 2 : change ip address
    print 'changing ip address'
    stdin, stdout, stderr = ssh.exec_command('sed -i -- s/'+oldIp+'/'+newIp+'/g /etc/sysconfig/network-scripts/ifcfg-eth0')
    print stdout.readlines()
    time.sleep(2)
    

    要安装 Paramiko,您可以从here 下载 tar.gz 文件。

    假设你真的是 python 新手,如何安装:

    • 下载tar.gz文件
    • 将内容解压到文件夹中
    • cd 从您的终端进入提取的文件夹
    • 执行这个python setup.py install
    • 那么你可以试试上面的例子

    注意:如果您在此处遇到安装注释,我可以为您提供帮助。

    【讨论】:

    • 比起手动下载和安装,pip install paramiko...
    • Suddev:你确定 exec_command() 对你有效吗?我一次只能执行一个 exec_command() - 第二次,我从来没有得到任何 o/p 或错误.. 只是空白的东西,我认为第二个命令也没有被执行过!
    • 是的,这是正确的做法。我有完全相似的脚本,可以完美运行
    • @user2939055 - 如果您认为它对您有用,请接受答案。如果你卡住了,在 cmets 中添加它们
    【解决方案2】:
    1. 您可以使用here 所述的 ssh 密钥,而不是使用密码进行身份验证。

    2. 使用subprocess.call(['/path/to/ssh', 'admin@xx.xx.xx.xx', 'remote_script.sh'])在系统“A”上启动您的 ssh 客户端

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-24
      • 2020-01-07
      • 2015-05-07
      • 1970-01-01
      • 1970-01-01
      • 2018-01-31
      • 1970-01-01
      相关资源
      最近更新 更多