码迷,mamicode.com
首页 > 系统相关 > 详细

linux-远程操作随笔

时间:2016-06-10 23:20:49      阅读:281      评论:0      收藏:0      [点我收藏+]

标签:linux远程批量操作

                       连接远程环境并交互的操作总结


第一类:直接在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


 


本文出自 “冰冰之星” 博客,请务必保留此出处http://520bingbing.blog.51cto.com/4244307/1787809

linux-远程操作随笔

标签:linux远程批量操作

原文地址:http://520bingbing.blog.51cto.com/4244307/1787809

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!