关闭

Linux 文件批量上传脚本

标签: linux
50人阅读 评论(0) 收藏 举报
分类:
                       连接远程环境并交互的操作总结

第一类:直接在linux环境下输入命令模式
   1)ftp username@remteip  #回车之后需要输入密码 
       或者:ftp remoteip #回车后提示输入用户名和密码
   2)sftp sftp=ssh+ftp
      用法:登陆与ftp一样方式
   3)ssh 它等价于sftp
      用法:等同sftp
   4)scp 是ssh+cp
      scp local_file remote_username@remote_ip:remote_folder 
      将文件拷贝到远程目录下,下载则参数反过来
      具体详细连接:http://www.cnblogs.com/hitwtx/archive/2011/11/16/2251254.html 
     
     ****建议:使用ftp与ssh命令与本地环境几乎一样,不建议使用sftp
 
第二类:通过脚本实现连接服务器并执行命令


    1.ftp:方式 
       ###########################################################
       #                  mv.sh
       #实现向多台远程机器传输文件,并设置可执行等指令
       ###########################################################
       #!/bin/ksh 
       root=root 
       pwd=pwd 
       remoteips='10.71.148.15 10.71.148.23' 
       for ip in $remoteips 
       do 
         ftp -in $ip<<EOF
user $root $pwd
cd /
put /user/local.txt /home/n
# 追加+R表示向文件目录下所有子文件加权限
chmod 755 local.txt
bye
         EOF
      done
    2.expect方式: expect和bsh这些都是一样的但是执行不同不支持xshell脚本那些语句
      参考: http://www.cnblogs.com/iloveyoucc/archive/2012/05/11/2496433.html
      ##############################################################
      #                  mv.exp《后缀可以是.sh》
      #实现向多台远程机器传输文件,但不能操作其他指令,因为你不知道
      #什么时候执行完,最后出现什么
      ##############################################################
      #!/usr/bin/expect -f   
      #睡眠10秒
      set timeout 10   
      #set等价于=定义初始化
      set username root  
      #[lindex $argv 0|1|2..] 固定格式表示从外传递进来的参数 
      set password [lindex $argv 0]   
      set hostname [lindex $argv 1]
      #spawn 表示执行指令 r表示文件目录  
      spawn scp localfile $username@$hostname 
        
      #①这里的{}类似swich的那个
      expect{
      #匹配到一个直接执行然后就跳出,里面不会
      "yes/no" {send "yes\r";expect "password:"; send "$pasword\n"}
      "password:"{send "$password\r"}
      }
      #send "exit\r"    
      expect eof


      测试:可以通过脚本循环里调用:


        ./mv.sh $pwd $ip


     ##############################################################
     # 通过ssh连接实现远程服务与控制台交互
     ##############################################################
     #!/usr/bin/expect -f   
     set timeout 10   
     set username root   
     set password huawei   
     set hostname [lindex $argv 0]   
     spawn ssh $username@$hostname   
     expect{
     #①等价于 exp_continue指令表示继续向下执行相当于case没break
     "yes/no" {send "yes\r";exp_continue}
     "password:"{send "$password\r"}
     }  
     #匹配控制台以#结尾输出,就执行加权指令
     expect "*#"
     send "chmod +x -R remotefile";
     bye  
     expect eof 






     也可以通过密钥实现不需要输入密码登陆,但是多台远程就需要每个密钥
     参考:http://www.linux360.com.cn/html/Linux/tutorial/0554/1392498954.html
      
      本机:
      >ssh-keygen -t rsa
      #会在~/.ssh/下生成公钥和密钥
      >chmod 755 ~/.ssh -R
      #拷贝公钥到远程主.ssh下,并改名authorized_keys
      >scp ~/.ssh/id_rsa.pub remoteip:/home/user1/.ssh/authorized_keys



只供个人参考



















 
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1918次
    • 积分:408
    • 等级:
    • 排名:千里之外
    • 原创:39篇
    • 转载:4篇
    • 译文:0篇
    • 评论:1条
    最新评论