cygwin是一个运行在windows系统的Linux仿真环境
某些windows服务器需要和其他的Linux服务器进行交互,或者在此服务器使用Linux系统的某些功能,但是服务器系统是windows server,并不支持,在此用cygwin实现。
cygwin官网:https://www.cygwin.com/
cygwin百度网盘链接
链接:https://pan.baidu.com/s/1Als6H0gdGtS3bE5nDzbq1g
提取码:w6EG
1. Cygwin配置
1.1 Cygwin安装
①Install from Internet,这种模式直接从Internet安装,适合网速较快的情况;
②Download Without Installing,这种模式只从网上下载Cygwin的组件包,但不安装;
③Install from Local Directory,这种模式与上面第二种模式对应,当你的Cygwin组件包已经下载到本地,则可以使用此模式从本地安装Cygwin
选择安装路径
在下载的同时,Cygwin组件也保存到了本地,以便以后能够再次安装,这一步选择安装过程中从网上下载的Cygwin组件包的保存位置
①Use System Proxy Settings 使用系统的代理设置
②Direct Connection 一般多数用户都是这种直接连接的网络,所以都是直接使用默认设置
③Use HTTP/FTP Proxy 使用HTTP或FTP类型的代理。如果有需要,自己选择此项后,设置对应的代理地址和端口
下载常用安装的组件包、cygrunsrv、automake、make、gcc-core、wget、gcc、vim、cron、openssh
等待安装完成即可
配置和其他主机的免密登录
ssh-keygen将会生成密钥文件和私钥文件id_rsa,id_rsa.pub
将 .pub 文件复制到B机器的 .ssh 目录, 并在B机器执行命令
cat /root/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
从此ssh连接不需要密码
3. 同步脚本编写
#!/bin/bash
fileTXT=`ls /cygdrive/j/cygwin64/home/btmuadmin/prjIMAS0909/Data/$(date +%Y%m%d) | grep "TXT$"`
fileX=`ls /cygdrive/j/cygwin64/home/btmuadmin/prjIMAS0909/Data/$(date +%Y%m%d) | grep "^XXX"`
date=$(date "+%Y-%m-%d %H:%M:%S")
useradd=system
path=/cygdrive/j/cygwin64/home/btmuadmin/prjIMAS0909/Data/$(date +%Y%m%d)
sftppath=/inroot/chinan/dat/interface/rcv/dea
logpath=/cygdrive/j/cygwin64/home/btmuadmin/logs/sftpput.log
for t in $fileTXT
do
sftp -i /cygdrive/j/cygwin64/home/btmuadmin/.ssh/id_rsa $useradd <<A
put $path/$t $sftppath
exit
A
#if判断上传TXT格式命令是否成功,不成功则日志追加failed并终止脚本
if [ $? -eq 0 ];then
echo " $date $t put success" >> $logpath
else
echo " $date $t put failed" >> $logpath
exit
fi
#if判断上条命令是否成功,成功则上传CTL文件,不成功则日志追加未执行上传目录并终止脚本
if [ $? -eq 0 ];then
sftp -i /cygdrive/j/cygwin64/home/btmuadmin/.ssh/id_rsa $useradd <<F
put $path/${t%.TXT}.CTL $sftppath
exit
F
#if判断上传CTL格式命令是否成功,不成功则日志追加failed并终止脚本
if [ $? -eq 0 ];then
echo " $date ${t%.TXT}.CTL put success" >> $logpath
else
echo " $date ${t%.TXT}.CTL put failed" >> $logpath
exit
fi
else
echo " $date ${t%.TXT}.CTL unexecuted put command" >> $logpath
exit
fi
done
#if判断上条命令是否成功
if [ $? -eq 0 ];then
sftp -i /cygdrive/j/cygwin64/home/btmuadmin/.ssh/id_rsa $useradd <<G
put $path/$fileX $sftppath
exit
G
if [ $? -eq 0 ];then
echo " $date $fileX put success" >> $logpath
echo "All files uploaded successfully"
else
echo " $date $fileX put failed" >> $logpath
fi
else
echo " $date $fileX unexecuted put command" >> $logpath
fi
4. Windows server 配置
4.1 环境变量配置
进入DOS命令提示符set PATH=C:\cygwin64\bin
输入:echo %PATH% 环境变量中设置的 PATH 值已经生效。
4.2 启动bat编写
4.3 计划任务
控制面板-->系统和安全-->管理工具-->任务计划程序
创建基本任务-->触发器(每日)-->添加程序脚本-->完成
修改任务属性 运行账户为SYSTEM
根据需要修改失败重启频率