如何使用Python在本地启动SSH会话?

时间:2015-06-03 01:56:58

标签: python ssh passwords username

我的意思是,如果我在系统“A”(Linux),我想ssh到系统“B”(Windows):在系统“A”,我可以做ssh admin@xx.xx .xx.xx将提示我输入密码,当验证时,我将进入系统“B”的“$”(在系统“A”上)。

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

2 个答案:

答案 0 :(得分:2)

我通常使用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
  • 然后你可以尝试类似上面的例子

注意:如果你在这里遇到安装评论,我可以帮助你。

答案 1 :(得分:1)

  1. 您可以使用man page所述的ssh密钥,而不是使用密码进行身份验证。

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