ssh,expect脚本实现远程登录,拷贝命令scp,rsync服务器的搭建

两台主从机之间的自动登录

在主机一中使用ssh-keygen产生公钥id.rsa.pub和私钥id.rsa

然后把公钥内容复制到主机2的.ssh/id.rsa.pub中(若没有就创建该目录)

注意,主机2中的防火墙要关闭,getenforce获得防火墙状态 (enforce  permissive disabled)

                                                                setenforce 0 (临时关闭防火墙)

要想永远关闭需要到配置文件中/etc/selinux/config 中设置重启后才会生效

修改文件夹/root/.ssh的权限:
(本地机和远程机都要修改)
chmod 700 /root/.ssh

修改文件的属性:
chmod 600 /root/.ssh/authorized_keys

将公钥复制到ip地址为192.168.163.101的远程机上:

ssh-copy-id  -i  /root/.ssh/id_rsa.pub root@192.168.2.150 (这条命令比scp有效多了,可以在远程主机上没有authorized_keys的情况下,直接运行,然后自动会在远程主机上创建/root/.ssh/authorized_keys)
注意主从登陆关系

ssh-keygen是用于在主机上产生秘钥的,然后把其中的公钥通过ssh-copy-id 传给远程从机

这样只能实现,在主机上远程登录从机,不能从机登陆主机。

远程登录形式:ssh root@192.168.1.1

远程执行命令:ssh root@192.168.1.1 "ls"

远程执行多条命令  ssh root@192.168.1.1 "ls ;id;w"

scp (-r 拷贝目录) 目标ip:目录地址

例如 

scp  dai  192.168.1.1:/root/

scp -r dai/ 192.168.1.1:/root/

rsync实现增量备份(拷新不拷旧,大大节省了拷贝时间),就算改了文件的属性,也算改动了,也算新文件

rsync 可以实现 本地-远程

   远程-本地

    本地-本地

例如

rsync -av   /dir   192.168.1.1:/root/

rsync -av     192.168.1.1:/dir     /dir

rsync -av       /dir    /dir2

三种类型的同步

-a == -rlptgoD以递归的方式进行归档,保持文件的属性

-r针对目录的拷贝

-v打印一些信息

-l 保留软链接(但是如果目标机器没有链接文件也是无效的)

-L把软链接的原文件拷贝到对方,名字是源软链接的名字(常用在跨服务器上,或者是远程备份)

-p保持文件的权限

-o  保持所属主

-g保持所属组

-D表示设备文件信息

-t保持时间信息

--delete同步的时候会删除目标文件中源没有的内容

--exclude=*.txt可以跟一些正则表达式,过滤不想拷贝的内容

--progress== -P统计同步速度或者数量

-u(相当于update)避免覆盖目标文件中新的文件。

 

 

 

 rsync服务器的搭建:

首先要建立一个/etc/rsyncd.conf的配置文件

配置文件中的内容

port=873  #服务开启的端口
log file=/var/log/rsync.log#日志文件
pid file=/var/log/rsync.pid# pid日志文件
address=192.168.2.133#服务器端的ip
[test]                        # rsync的用户,只能由指定的用户去同步文件,可以多个用户同时存在
path=/tmp/1234/      #  服务器端下存放的文件内容(只能针对这个目录下的文件进行操作)
use chroot=true        # 限定path路径,如果是true就只能在 path指定的目录下,如果想拷贝外面的软链接,就需要设

   置成false
read only=no             #这里表示可以对文件进行写操作
uid=root                     #以哪个用户身份去进行传输
gid=root                      #同上
auth users=test           #限定用户只能是test,也可以不指定,看具体应用
secrets file=/etc/rsync.passwd  # 设置test用户的密码,注意要设置成600权限。该文件内容形式(用户:密码) 例如 test:1234567

hosts allow=192.168.2.0/24    #允许该网段的ip进行rsync服务的访问,也可以是多个网段或者ip

                                                     如:hosts allow=192.168.2.168  192.168.2.113

#max connections #最大连接数,默认是0,既没有限制。可忽略

#list 查询该服务器上所用模块时,是否被列出,true为列出,false不被列出。可忽略

用法例如:rsync -av  /root/123   192.168.2.133::test/   #(这里的test相当于上面的/tmp/1234/目录。注意这里是"::")

然后启动服务  rsync   --daemon --config=/etc/rsyncd.passwd

如果想开机启动,可把上面一条命令加入/etc/rc.d/rc.local中

 

 

 

 

另外一种免密码登陆方式expect

yum install expext

#!/usr/bin/expect
set user "root"  #设置用户名变量
set passwd "1234567" #设置用户密码
spawn  ssh $user@192.168.2.1 #执行的命令
expect "yes/no" #匹配到yes/no 

send "yes\r" #发送yes
expect "password:" #匹配到password
send "$passwd\r" #然后发送密码

interact #用户交互

#expect eof  #结束

如下是expect 里面的形参设置
set b [lindex $argv 0] ;;第一个参数
set a [lindex $argv 1] ;; 第二个参数
set . ..................第N个参数

如果脚本里面有文件传输,可能会出现在文件传输过程中,突然断掉。这是由于expect脚本有一个默认的超时相应。

你需要重新设置默认响应时间

比如 set timeout $tout   (tout 就是设置的时间,以秒为单位)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值