前言:
由于工作经常会遇到取数据、多台虚拟机(linux系统)执行同样的操作之类的命令,所以就写了这篇文档作为记录
解决问题:
1、多台虚拟机(linux系统)批量操作脚本
2、linux跨服务器远程数据拷贝
解决方案:
方案一:使用公钥和私钥的方法
1.linux跨服务器远程数据拷贝
1)、先在两台服务器生成公钥和密钥
ssh-keygen -t rsa
复制
2)查找authorized_keys文件所在路径
find / -name authorized_keys
复制
3)、将秘钥源文件所在服务器的公钥拷贝到目标服务器,加入authorized_keys中
cat id_rsa.pub74 >>authorized_keys
复制
3)、然后在源文件所在服务器执行
scp data.jar root@192.168.1.8:/root/tester/system-2.4.3.jar
复制
前面为源文件地址,后面为目标服务器及要复制的地址
2、远程执行批量命令脚本:
ssh root@192.168.1.9 'cd /root/tester && sh /root/tester/test.sh'
复制
方案二:使用脚本
1、远程需要传输的文件是每天自动生成的数据库备份
1)、如果没有安装lftp,就安装lftp
yum install lftp -y
复制
2)、创建sh (脚本)文件
#!/bin/bash
#SFTP配置信息
#IP
IP=192.168.21.67
#端口
PORT=22
#用户名
USER=root
#密码
PASSWORD=yc1234567
#待上传文件根目录
CLIENTDIR=/mnt/mysql-backup
#SFTP目录
SEVERDIR=/usr/mysql-backup
#待上传文件名
d2=`date
+%Y%m%d`
FILE=zita_wms-$d2_013001.dump
lftp -u ${USER},${PASSWORD} sftp://${IP}:${PORT} <
cd ${SEVERDIR}/
lcd ${CLIENTDIR}
put ${FILE}
by
EOF
复制
3)、授权文件操作
chmod 777 yc_test.sh
复制
4)、如果再windows 里面编辑的文件,放到linux 里面,需要更改为unix的文件格式
viyc_test.sh
:set ff=unix
:wq!
复制
如果再linux 里面创建文件
touch yc_test.sh
复制
按 i 编辑内容
:wq!
复制
退出
编辑sh 文件前 可以测试是否可用
lftp -u root,yc123456 sftp://111.111.111.111:22 <
cd usr/mysql-backup
lcd /usr/sh/
put a.xlsx
by
EOF
复制
编辑完成后可以直接调用
/usr/sh/yc_test.sh
复制
定时触发脚本:
放到crontab 里面
root身份登录到命令行
crontab -e
复制
按下i键进入到编辑模式
0 */1 * * * usr/sh/start-yc_test.sh
复制
同时按下ctrl+c退出编辑模式
按下shift+:
输入wq
退出 crontab
复制
备注学习:
1、lftp初涉
lftp命令是一款文件客户端程序,它支持ftp、SETP、HTTP和FTPs等多种文件传输协议。lftp支持tab自动补全,记不得命令双击tab键,就可以看到可能的选项了。
1)、语法
lftp(选项)(参数)
复制
2)、选项
-f:指定lftp指令要执行的脚本文件;
-c:执行指定的命令后退出;
--help:显示帮助信息;
--version:显示指令的版本号
复制
3)、登录ftp
lftp 用户名:密码@ftp地址:传送端口(默认21)
复制
3)、查看文件与改变目录
ls
cd 对应ftp目录
复制
4)、下载
get 当然是可以的,还可以:
mget -c *.pdf #把所有的pdf文件以允许断点续传的方式下载。
mirror aaa/ #将aaa目录整个的下载下来,子目录也会自动复制。
pget -c -n 10 file.dat #以最多10个线程以允许断点续传的方式下载file.dat,可以通过设置pget:default-n的值而使用默认值。
复制
5)、上传
同样的put、mput都是对文件的操作,和下载类似。
mirror -R 本地目录名
将本地目录以迭代(包括子目录)的方式反向上传到ftp site。
复制
6)、模式设置
set ftp:charset gbk
远程ftp site用gbk编码,对应的要设置为utf8,只要替换gbk为utf8即可。
set file:charset utf8
本地的charset设定为utf8,如果你是gbk,相应改掉。
set ftp:passive-mode 1
使用被动模式登录,有些site要求必须用被动模式或者主动模式才可以登录,这个开关就是设置这个的。0代表不用被动模式。
复制
7)、书签
其实命令行也可以有书签,在lftp终端提示符下:
bookmark add ustc
就可以把当前正在浏览的ftp site用ustc作为标签储存起来。以后在shell终端下,直接lftp ustc就可以自动填好用户名和密码,进入对应的目录了。
bookmark edit
会调用编辑器手动修改书签。当然,也可以看到,这个书签其实就是个简单的文本文件。密码,用户名都可以看到。
8)、配置文件
vim etc/lftp.conf
一般,我会添加这几行:
set ftp:charset gbk
set file:charset utf8
set pget:default-n 5
复制