博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用autoexpect避免sftp输入密码
阅读量:2446 次
发布时间:2019-05-10

本文共 1641 字,大约阅读时间需要 5 分钟。

先是从数据库中导出所需文件,再将此文件转移至一个web server,然后通过此web server用sftp传输给第三方的server
所用到的脚本依次如下
先从数据库导出文本,并scp到web server
--为避免输入密码时候人机交互,需要将两个server配置用户等价
[oracle@justin tools]$ more sftpchenying.sh
source /home/oracle/.bash_profile

date1=`date --date='1 day ago'  +%Y%m%d`

/justin/./sqluldr2_linux64_10204.bin  justin/**** sql=/justin/sftp.sql field=## charset="ZHS16GBK" file=/justin/product"$date1".csv

scp /justin/product"$date1".csv
rm /justin/product"$date1".csv

在中转server上部署以下脚本

[deploy@justin ~]$ more sftp.sh
date1=`date --date='1 day ago'  +%Y%m%d`

sftp -oPort=3222 justin@*.*.*.* << END

cd /upload
lcd /home/deploy
mput product$date1.csv
END

rm /home/deploy/product$date1.csv

同样为了避免sftp输入密码的人机交互,使用expect命令
先通过root用户yum install expect安装expect,然后输入autoexpect sftp.sh,此时会产生一个名为script.exp的文件,每次只需调用./script.exp即可自动完成sftp到remote server并上传文件的操作
似乎只能通过./script.exp的方式调用该文件,设置crontab时候比较麻烦,可以新建一个文件
[deploy@justin ~]$ more sftpexec.sh
cd /home/deploy
./script.exp
Crontab设置则如下
[deploy@justin ~]$ crontab -l
0 2 * * * sh /home/deploy/sftpexec.sh > /home/deploy/sftpexec.log 2>&1

而生成的script.exp内容如下

[deploy@justin ~]$ more script.exp
#!/usr/bin/expect -f

set force_conservative 0  ;# set to 1 to force conservative mode even if
                          ;# script. wasn't run conservatively originally
if {$force_conservative} {
        set send_slow {1 .1}
        proc send {ignore arg} {
                sleep .1
                exp_send -s -- $arg
        }
}

set timeout -1
spawn ./sftp.sh
match_max 100000
expect -exact "Connecting to *.*.*.*...\r
password: "
send -- "password\r"
expect eof

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15480802/viewspace-708026/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/15480802/viewspace-708026/

你可能感兴趣的文章
reddit_使用PHP和JSON获取URL的Reddit分数
查看>>
火狐插件 xpi打包_将Firefox扩展程序打包为XPI
查看>>
使用Google Analytics(分析)跟踪AJAX链接点击
查看>>
图像处理库 gd_使用PHP和GD库进行图像处理
查看>>
robots.txt_robots.txt在开发服务器上重新路由
查看>>
css压缩_使用PHP轻松实现CSS压缩
查看>>
印象chrome_Google Chrome的第一印象
查看>>
mootools_使用MooTools进行背景动画
查看>>
动态库的静态加载和动态加载_以动态方式加载静态内容
查看>>
mootools_使用MooTools滑块的常见问题解答
查看>>
mootools_使用MooTools 1.2分配锚点ID
查看>>
使用MySQL DATE_FORMAT()格式化日期字段
查看>>
mootools_流体锚–使用MooTools的平滑锚
查看>>
sass 变量_不吸的Sass颜色变量
查看>>
Fabian Beiner撰写的IMDB Grabber类
查看>>
防止缓存您CSS和JavaScript文件
查看>>
mootools_使用MooTools创建动画滑动按钮
查看>>
通过Lighter.js代码解析正则表达式
查看>>
mootools_使用MooTools的Digg样式动态共享小部件
查看>>
php验证码数字_PHP:验证数值和数字
查看>>