【Linux学习】expect远程下载和上传样例

expect远程下载和上传样例

 1 #!/bin/sh
 2 
 3 if [ $# -ne 7 ];then
 4 exit 8;
 5 fi
 6 dstip="$1";
 7 dstport="$2";
 8 id="$3";
 9 pw="$4";
10 dstpath="$5";
11 localpath="$6";
12 action="$7";
13 if [ ${action} = "upload" ];then
14     command="scp -pP ${dstport} ${localpath} ${id}@${dstip}:${dstpath}";
15 elif [ ${action} = "download" ];then
16     command="scp -pP ${dstport} ${id}@${dstip}:${dstpath} ${localpath}";
17 else
18     exit 9;
19 fi
20 expect -c "set timeout 300;
21             spawn ${command};
22             expect {
23                 "(yes/no)?" {
24                     send "yes
";                                                        
25                         expect {
26                             "*assword:" {        
27                                 send "${pw}
";
28                                 expect {
29                                     "100%" {    
30                                         expect eof;
31                                         exit 0;
32                                         } 
33                                     "*assword:" {
34                                         exit 1;
35                                         }
36                                         timeout {exit 5;}
37                                         eof {exit 5;}
38                                     }
39                             }
40                             timeout {exit 3;}
41                             eof {exit 3;}
42                         }                            
43                 }
44                 "*assword:" {        
45                     send "${pw}
";
46                     expect {
47                         "100%" {    
48                             expect eof;
49                             exit 0;
50                             } 
51                         "*assword:" {
52                             exit 1;
53                             }
54                             timeout {exit 5;}
55                             eof {exit 5;}
56                         }
57                 }
58                 timeout { exit 1;}
59                 eof {exit 1;}
60             }
61             "
62 result=$?
63 exit $result
作者:gtea 博客地址:https://www.cnblogs.com/gtea
原文地址:https://www.cnblogs.com/gtea/p/12668796.html