大奖888网页版登陆 1

操作系统间文件互传小工具

By admin in 茶社 on 2019年11月2日

1.背景

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

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

而运维人员是在 windows server 下使用
xshell 连接 linux 下进行导入导出来进行操作

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

 

为什么用?

我们有时候会经常需要在各个操作系统间传输文件,如果服务器没有安装FTP服务,或者不知道FTP账户密码,又或者觉得FTP操作不是很方便,想实现一键传输。

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

2.要解决的问题

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

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

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

怎么用?

  • 下载地址:

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:WindowsSystem32
    文件夹下(在任意地方打开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:testtest.log 传到 linux下
    /tmp/文件夹下)
    pscp -pw linuxroot密码 D:testtest.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

1.解决第一个问题

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

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

因为问题2 要在window下实行 优先想到
使用ftp 因为 ftp在windows 下可以通过cmd 直接执行

大奖888网页版登陆 1

2.解决第二个问题

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

问题一、如何才可以
把windows下的数据文件上传到ftp上呢???

 

大奖888网页版登陆 2

问题二、我怎么才可以点击一下就可以完成这样的操作呢

我想到了windows下的批处理文件.bat

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

所以可以直接调用
但是我又需要在ftp下有这么多的操作怎么才可以呢

ftp -s脚本 可以把你在ftp的指令
直接写入文件中 而用-s 直接在ftp下运行

 

但是又有了一个新的问题

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

这个问题困扰了我很久

直到我发现了这个命令

交互模式:关闭

大奖888网页版登陆 3

 

3.解决第三个问题

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

首先
:在linux下如果同步到库中呢

mysql -uroot -p 库名 < 路径 

就这一个指令
,我完全可以在linux写的shell脚本中去运行

这样就解决了备份 但是 你怎么
在windows端下 进行操作呢

 

 

 

我首先想到了putty.exe

如果 可以在cmd 直接调用putty
我就直接可以写批处理文件 来达成我要做的事情

 大奖888网页版登陆 4

putty登录linux需要什么

大奖888网页版登陆,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 阿姆斯特朗喷气式阿姆斯特朗上传同步工具(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来做

转载请标注

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2020 大奖888网页版登陆 版权所有