paramiko建立無密碼傳輸認證
root@datapark2:~# python -V
Python 3.4.3
#!/usr/bin/python
# -*- coding:utf-8 -*-
import paramiko
import sys,os
home_dir=os.path.expanduser('~')
id_rsa_pub='%s/.ssh/id_rsa.pub' % home_dir
if not id_rsa_pub:
print('id_rsa.pub error!')
sys.exit(0)
def upload_file(hostname,port,user,passwd):
try:
s=paramiko.SSHClient()
s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
s.connect(hostname,port,user,passwd)
t=paramiko.Transport((hostname,port))
t.connect(username=user,password=passwd)
sftp=paramiko.SFTPClient.from_transport(t)
print('create Host:%s .ssh dir......' %hostname)
stdin,stdout,stderr=s.exec_command('mkdir ~/.ssh')
print('upload id_rsa.pub to Host: %s.....' %hostname)
sftp.put(id_rsa_pub,"/tmp/temp_key")
stdin,stdout,stderr=s.exec_command('cat /tmp/temp_key >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys && rm -f /tmp/temp_key')
print('host:%s@%s auth success!\n' %(user,hostname))
t.close()
s.close()
except Exception as e:
import traceback
traceback.print_exc()
try:
t.close()
s.close()
except:
pass
def run():
with open('host.txt','r') as f:
for i in f:
f1 = i.split()
hostname,port,user,passwd = f1
upload_file(hostname,int(port),user,passwd)
if __name__ =="__main__":
run()
root@datapark2:/data/python_test# cat host.txt
192.168.31.162 22 root 123456
192.168.31.130 22 root 123456
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.