用户名:
密码:
忘记密码?
注册
文档
问吧
论坛
PHP函数
下载
全站
搜索
标题
全文
热门搜索
首页
新闻
论坛
问吧
文档
手册
下载
博客
你的位置:
问答吧
收藏此问题
发表新评论
expect scp 数据不完整
本帖最后由 风吹不倒 于 2010-07-13 16:34 编辑
写了个脚本,创建任务列表,包含ip password;expect读取列表内容作为参数,scp数据包;创建管道,并发执行expect
当数据包比较大的时候,传过去会不完整。
不是所有,只有其中几台偶尔会有问题,会是什么问题呢?会不会是用了并发的原因?
#!/bin/bash
dir=$3
file="`echo $1|sed 's#,# #g'`"
#匹配站点名,打印任务列表
for x in `echo $2|sed 's/,/ /g'`
do
IFS=$'\n'
case $x in
huabei)
for i in `sed -n "/huabei/p" ip`
do
echo 22 $i >> list
done
;;
dongbei)
for i in `sed -n "/dongbei/p" ip`
do
echo 33 $i >> list
done
;;
*)
for i in `sed -n "/$x/p" ip`
do
echo 44 $i >> list
done
;;
esac
done
#expect内容 将文件名替换进去
echo '#!/usr/local/bin/expect
set p [lindex $argv 0]
set i [lindex $argv 1]
set d [lindex $argv 2]
set pw [lindex $argv 3]
spawn /usr/bin/scp -P$p '"$file"' username@$i:$d/
set timeout -1
expect {
"Connection refused" {exit 2}
"(yes/no)?" {send "yes\r";exp_continue}
"password:" {send "$pw\r";exp_continue}
"*Permission denied*" {exit 1}
"*100%*" {exit 6}
}
' > chuanbao_exp
#函数内容:取出list文件五项内容,执行expect
exp() {
IFS=$' \t'
set `echo $w`
expect chuanbao_exp $1 $4 $dir $5 1>/dev/null 2>&1
case $? in
6)
echo -e "\033[36m正在上传文件至$2-$3\033[0m\n\033[32mSuccessful!!! \033[0m"
;;
1)
echo -e "\033[36m正在上传文件至$2-$3\033[0m\n\033[31;1mPermission denied \033[0m"
;;
2)
echo -e "\033[36m正在上传文件至$2-$3\033[0m\n\033[31;1mConnection refused \033[0m"
;;
0)
echo -e "\033[36m正在上传文件至$2-$3\033[0m\n\033[31;1m其它错误 \033[0m"
;;
esac
}
#设置管道,设定并发数,执行任务
mkfifo tmpfile
exec 4<>tmpfile
rm tmpfile
thred=10
{
for ((c=1;c<=${thred};c++))
do
echo
done
} >&4
for w in `cat list`
do
(exp;echo >&4) &
done <&4
wait
exec 4>&-
#删除临时文件
rm -f {chuanbao_exp,list}
复制代码
ip文件格式
站点名 服务器名 ip password
昵称: 风吹不倒 时间: 2010-07-13 14:36:00
楼主给的数据也不完整
昵称: where27 时间: 2010-07-13 15:49:00
回复
where27
去掉了些检查判断,贴上了,帮看看
昵称: 风吹不倒 时间: 2010-07-13 16:16:00
发表评论
昵称:
内容:
验证:
看不清?
正在提交...
PHP
PHP论坛
LAMP
LAMP论坛
站长
站长论坛
Copyright © 2009-2010
LAMPChina
粤ICP备09013514号
写了个脚本,创建任务列表,包含ip password;expect读取列表内容作为参数,scp数据包;创建管道,并发执行expect
当数据包比较大的时候,传过去会不完整。
不是所有,只有其中几台偶尔会有问题,会是什么问题呢?会不会是用了并发的原因?
站点名 服务器名 ip password