在服务器A上的程序用到服务器B上的文件data,并且需要定期更新文件。 但是直接在bash文件中使用
1
|
|
由于权限限制,不能免ssh密码拷贝,会要求输入B机器的密码。本想直接在bash文件中使用Pexpect 来实现自动输入密码,并scp拷贝文件,但是权限的限制导致不能安装使用Pexpect 。
最后考虑使用python实现。
环境:
1
2
3
4
5
6
7
8
9
10
|
python2. 7 centos
from pexpect import *
import os
cwd = os.path.split(os.path.abspath(__file__))[ 0 ]
child = spawn( "scp -P 1000 192.168.199.5:/temp/data {cwd}" . format (cwd = cwd))
child.expect ( "password" )
child.sendline ( "password-for-B " )
child.read()
|
在网上查到的一些资料中,一般都会少 child.read(), 这将使得,scp输入了正确密码,完成链接,但是服务器没有将拷贝的数据文件读取到服务器A上。
有关以上命令的解释见官方文档的说明。
参考
Pexpect
https://pexpect.readthedocs.io/en/stable/index.html
以上这篇python Pexpect 实现输密码 scp 拷贝的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/a1368783069/article/details/78721796