1.背景

windows server 2008 下 每一日会有
*.sql数据文件

须要上传到linux
中的mysql数据库中

而运维职员是在 windows server 下使用
xshell 连接 linux 下展开导入导出来举行操作

客户必要:1.点击桌面上的程序完成上传到linux下的mysql数据库中。

 

本文讲的方案完毕以下职能:利用winscp和putty的剧本功效,完结在Window平台上编制代码,上传到Linux举办编译,然后取编译结果。须要用到3个文本,分别如下:

干什么用?

咱们有时会不时索要在依次操作系统间传输文件,若是服务器并未安装FTP服务,或者不知底FTP账户密码,又或者以为FTP操作不是很便利,想落成一键传输。

PSCP作为一款轻量级的软件,使用简易,安全可靠,且可定制脚本,是比较好的文件传输工具。

env
OS:centos 5.4 final
ftp:vsftpd-2.0.5
 1,首先可透过newusers或脚本来新建用户,通过脚本需事先将所需用户名以每行一位的格式写在一个文档里,然后,执行useradd.sh
 
Useradd.sh内容为:
#!/bin/bash
for i in `cat ./aa`;
do
mkidr web/ftp/$i;
useradd $i -s /sbin/nologin -d /web/ftp/$i -g tb; #tb组需事先创立落成
echo 123456 | passwd –stdin $i;
done
若从此需求新建FTP用户,则输入指令为:useradd $FTPuser -s /bin/nologin -d
/web/ftp/$FTPuser;echo 123456 | passwd –stdin $FTPuser;
2,在用户新建达成后,启动vsftpd,并开展配置文件的配置
1,service vsftpd start
2 Vim /etc/vsftpd/vsftd.conf
#!/bin/bash #注释
anonymous_enable=NO #不允许匿名用户登录
no_anon_password=NO
local_enable=YES #允许本地用户登录
write_enable=YES #允许本地用户写入
local_umask=000 #指定ugoa的权限
anon_upload_enable=NO #匿名用户不相同意上传
anon_mkdir_write_enable=YES #匿名用户不容许新建文件夹
dirmessage_enable=YES #欢迎界面新闻
xferlog_enable=YES #同意记录日志 日志默许保存在/var/log/vferlog下
connect_from_port_20=YES #允许被动方式登录
xferlog_file=/var/log/xferlog #指定xferlog文件目录
ftpd_banner=Welcome to TechBridge.inc. FTP service.
#指定界面欢迎音讯
chroot_list_enable=YES #禁锢用户登录目录
chroot_list_file=/etc/vsftpd/chroot_list
#指定羁系用户为/etc/vsftpd/chroot_list下用户
Listen=YES #打开侦听
local_max_rate=128000 #本地用户上传速度最大值(128k/s)
max_per_ip=20 #最奥斯汀接IP
userlist_enable=YES
#/etc/vsftpd/userlist里列出用户分歧意登录(如root等)
tcp_wrappers=YES #vsftpd基本配备,操作系统间文件互传小工具。开启tcp_wrappers
local_root=/web/ftp/ #指定地点目录
 
3
在改动完/etc/vsftpd/vsftpd.conf后,配置/etc/vsftpd/chroot_list,指定哪些用户必要羁系在家目录
4 在/web/ftp下新建文件夹,并设置权限
drwxrwxrw- 3 mike.zhu tb 4096 12-29 15:34 tools
drwxrw-r-x 51 root root 4096 12-29 15:29 users
然后,重启vsftpd
Service vsftpd restart
正文出自 “gdnotepad” 博客

2.要化解的题目

1.通过怎么样来让数据文件 上传到 linux

2.怎么才方可点击一下就达到
window下的数据文件 上传到linux下

3.数据文件到达后 怎么办才方可
在window下 让数据同步到数据库中

(1) synchronize.bat

:: 须要转移 WinSCP.exe 和  putty.exe 的门径
:: 须要安装的变量
@SET localpath=E:\work\projectname
@SET remotepath=/home/username/work/projectname
@SET server=192.168.1.168
@SET port=22
@SET username=username
@SET password=123456
@SET winscp=”D:\Program Files\WinSCP\WinSCP.exe”
@SET putty=”D:\Program Files\WinSCP\PuTTY\putty.exe”

:: 爆发文件到linux机器 【LINUX公社 www.LinuxIDC.com 】
%winscp% /console /script=synchronize.script /parameter %username%
%password% %server% %port% %localpath% %remotepath%

echo “Send Done!”

:: 创建make shell
echo cd %remotepath% > make.sh
:: echo make clean >> make.sh
echo make 1^>make.out 2^>make.out >> make.sh

:: 执行make
%putty% -pw %password% %username%@%server% -P %port% -m make.sh

echo “Make Done!”

:: 把make的结果传递到客户端
%winscp% /console /script=aftermake.script /parameter %username%
%password% %server% %port% %localpath% %remotepath%

:: 显示make后的结果
cat make.out

pause

怎么用?

  • 下载地址:

64位
https://the.earth.li/~sgtatham/putty/latest/w64/pscp.exe
32位
https://the.earth.li/~sgtatham/putty/latest/w32/pscp.exe

  • 把pscp.exe放到C:\Windows\System32
    文件夹下(在任意地点打开cmd.exe都能实施pscp命令)

  • linux –> windows (linux下 /tmp/test.log 传到 windows
    D:\test\文本夹下)
    pscp -pw linuxroot密码 root@192.168.0.1:/tmp/test.log D:\test\

  • windows –> linux (windows D:\test\test.log 传到 linux下
    /tmp/文件夹下)
    pscp -pw linuxroot密码 D:\test\test.log root@192.168.0.1: /tmp/

  • 定制脚本(每一天都亟需查阅linux服务器上日志):

  1. 新建log.bat
  2. 内容为:
    pscp -pw linuxroot密码 root@192.168.0.1:/tmp/test.log D:\test\

OS:centos 5.4 final ftp:vsftpd-2.0.5
1,首先可经过newusers或脚本来新建用户,通过脚本需事先将所需用户名以每行一位的格式写在一个文档里,然…

1.化解第三个难点

1.通过如何来让数据文件 上流传 linux

可用方法 FTP samba NFS 文件共享服务

因为难点2 要在window下实施 优先想到
使用ftp 因为 ftp在windows 下可以由此cmd 直接实施

澳门金沙国际 1

2.解决首个难题

怎么才方可点击一下就直达
window下的数据文件 上传到linux下

难题一、怎么样才方可
把windows下的数据文件上传到ftp上啊???

 

澳门金沙国际 2

题材二、我怎么才足以点击一下就足以做到如此的操作呢

本身想开了windows下的批处理文件.bat

首先 ftp
客户端是windows下自带的

从而可以直接调用
不过自身又要求在ftp下有这么多的操作怎么才行吗

ftp -s脚本 可以把您在ftp的一声令下
直接写入文件中 而用-s 直接在ftp下运作

 

可是又有了一个新的难点

历次上传一个sql文件都要 yes 一下
???

本条标题找麻烦了本人很久

截止自己发觉了那么些命令

交互情势:关闭

澳门金沙国际 3

 

3.解决第一个难题

数据文件到达linux 怎么着才可以在windows操作同步到数据库中呢???

先是
:在linux下一旦同步到库中吗

mysql -uroot -p 库名 < 路径 

就这么些指令
,我完全可以在linux写的shell脚本中去运作

如此那般就一举成功了备份 不过 你怎么
在windows端下 进行操作呢

 

 

澳门金沙国际, 

自己首先想到了putty.exe

假定 可以在cmd 直接调用putty
我就间接可以写批处理文件 来达到自己要做的事体

 澳门金沙国际 4

putty登录linux要求哪些

ip地址 用户名 密码 端口
我怎么才足以把他们手拉手 启动呢

putty.exe -ssh -pw 123789456
root@192.168.91.59

 

唯独大家的末梢目的是怎么???

 

在windows 下运作 shell 脚本
同步数据库

putty.exe -m 脚本

putty.exe -ssh -pw 123789456 -m
脚本名字 root@192.168.91.59

这么就足以 在windows 下运行 shell
脚本 同步 linux 数据库

 

 

上边放成品的代码 代码只是为了作用完全可以再裁减很多 

专注:将这几个批处理 与putty.exe
放到有sql的公文夹下运行 

 

@echo off
color 0a
cd /d %~dp0
if exist *.sql (goto next) else (goto baddir)
:next
@Echo Off
color 3E
set /p var=请输入你要布局的IP地址:
set /p pass=请输入root密码:
cls
title Armstrong喷气式Armstrong上传同步工具(2018.4.21)
echo.【作用表明】
echo.通过FTP把当前目录下的.sql文件同步到对象mysql中
echo.一键搭建环境、一键上传、一键协办伸张工作成效
echo.
echo.【尤其提示】
echo.1. 借使第一次运行,获取秘钥请手动点击确定
echo.2. 工具使用各类(1)(2)单独采纳(2)会失效
echo.3. 必要有限支撑yum源可以正常安装FTP服务
echo 4. window7下完美运行,win10下可能会见世putty启动慢
echo.5. sql文件默许存放在/LT/date下
echo.6. 同步达成默许放进/LT/lajixiang下 默许保存5天
echo.7. 如sql过大,上传时间长属于常规意况,请勿关闭
echo.8. 最后解释权为小编所有
echo. 要是当前服务器安装了FTP服务请谨慎使用 谨防数据丢失!!
echo.
echo.

:on
cd /d %~dp0
choice /c 1234 /m “请输入编号:(1)创设;(2)同步;(3)卸载;(4)关闭;
if %errorlevel%==4 goto guanbi
if %errorlevel%==3 goto xiezai
if %errorlevel%==2 goto tongbu
if %errorlevel%==1 goto dajian

:dajian
@echo off
echo 搭建环境并上传……
echo ^#!/bin/bash^ >linux.sh
echo ^yum -y install vsftpd^ >>linux.sh
echo ^useradd -p 123789456 litong^ >>linux.sh
echo ^echo ‘litong:123789456’^|chpasswd^ >>linux.sh
echo ^mkdir /LT/data -p^ >>linux.sh
echo ^mkdir /LT/lajixiang -p^ >>linux.sh
echo ^chmod 777 /LT/data^ >>linux.sh
echo ^chmod 777 /LT/lajixiang^ >>linux.sh
echo ^echo anonymous_enable=YES ^> /etc/vsftpd/vsftpd.conf^
>>linux.sh
echo ^echo local_enable=YES ^>^> /etc/vsftpd/vsftpd.conf ^
>>linux.sh
echo ^echo write_enable=YES ^>^> /etc/vsftpd/vsftpd.conf ^
>>linux.sh
echo ^echo local_umask=022 ^>^> /etc/vsftpd/vsftpd.conf^
>>linux.sh
echo ^echo dirmessage_enable=YES ^>^> /etc/vsftpd/vsftpd.conf^
>>linux.sh
echo ^echo xferlog_enable=YES ^>^> /etc/vsftpd/vsftpd.conf^
>>linux.sh
echo ^echo connect_from_port_20=YES ^>^>
/etc/vsftpd/vsftpd.conf^ >>linux.sh
echo ^echo xferlog_std_format=YES ^>^> /etc/vsftpd/vsftpd.conf^
>>linux.sh
echo ^echo listen=YES ^>^> /etc/vsftpd/vsftpd.conf^
>>linux.sh
echo ^echo pam_service_name=vsftpd ^>^> /etc/vsftpd/vsftpd.conf^
>>linux.sh
echo ^echo userlist_enable=YES ^>^> /etc/vsftpd/vsftpd.conf^
>>linux.sh
echo ^echo tcp_wrappers=YES ^>^> /etc/vsftpd/vsftpd.conf^
>>linux.sh
echo ^echo local_root=/LT/data ^>^> /etc/vsftpd/vsftpd.conf^
>>linux.sh
echo ^echo userlist_deny=NO ^>^> /etc/vsftpd/vsftpd.conf^
>>linux.sh
echo ^echo litong ^> /etc/vsftpd/user_list^ >>linux.sh
echo ^service iptables stop^ >>linux.sh
echo ^setenforce 0^ >>linux.sh
echo ^service vsftpd restart^ >>linux.sh
putty.exe -ssh -pw %pass% -m linux.sh root@%var%
del linux.sh
Echo open %var% >up
Echo litong>>up
Echo 123789456>>up
Echo prompt >>up
Echo mput *.sql>>up
Echo bye>>up
FTP -s:up
del up
echo 上传成功
goto on
:tongbu
pause
set /p zhanghu=数据库账户:
set /p mima=数据库密码:
set /p kuming=将要同步的库名:
del
echo 同步到数据库中……
echo #/bin/bash >peizhi.sh
echo mysql -u%zhanghu% -p%mima% %kuming% ^</LT/data/*.sql
>>peizhi.sh
echo mv /LT/data/*.sql /LT/lajixiang/ >>peizhi.sh
echo find /lt/lajixiang/*.sql -mtime +5 ^|xargs rm -rf
>>peizhi.sh
putty.exe -ssh -pw %pass% -m peizhi.sh root@%var%
del peizhi.sh
echo 同步成功
goto on
:xiezai
echo 卸载环境中……
echo rm -r /LT >xiezaihuanjing.sh
echo userdel -r litong >>xiezaihuanjing.sh
echo yum -y remove vsftpd >>xiezaihuanjing.sh
putty.exe -ssh -pw %pass% -m xiezaihuanjing.sh root@%var%
del xiezaihuanjing.sh
echo 卸载成功
goto on
:baddir
echo.
echo
警告:请将本工具放在要上传的sql文件夹下再运行,否则将现出不足预期的结果!
echo.
echo
(例:若sql文件在目录为【D:\date】,则将该工具放在【D:\date】目录下后再履行。)
echo.
pause
echo 退出脚本
exit
:guanbi
exit

以上脚本中有为数不少足以优化的地点 只是上下一心不愿在去弄了 有趣味的可以优化一下 比如 shell中的查找替换可以用sed来做

转发请标注

 

相关文章