分类目录归档:None

windows运维:FTP自动上传 文件夹中的VHD文件

@echo off
setlocal enabledelayedexpansion

set FTP_HOST=192.168.1.1 21
set FTP_USER=back
set FTP_PASS=back123


set "searchPath=F:\BACKUP\WindowsImageBackup"


set "vhdFiles="

for /r "%searchPath%" %%v in (*.VHD) do (
    echo File found: "%%v"
    ::FTP Create
    echo open %FTP_HOST%> ftp_commands.txt
    echo %FTP_USER%>> ftp_commands.txt
    echo %FTP_PASS%>> ftp_commands.txt
    echo binary>> ftp_commands.txt
    echo put "%%v">> ftp_commands.txt
    echo quit>> ftp_commands.txt
    ftp -is:ftp_commands.txt


)

::pause

windows 运维之 FTP

windows server 中默认防火墙是关闭端口的,若使用服务器去连接FTP服务器,仅仅开放20 21是不够的,需要在防火墙开启入站和出站规则
将该程序的:c:\windows\system32\ftp.exe

全部端口打开

FPT运行文件ftp.txt

open 192.168.1.112
mpy
mpy123456
binary
lcd E:\backup_save
put db.bak
quit
CMD中执行
ftp -is:ftp.txt
即可
创建BAT文件
@echo off
ftp -is:ftp.txt

大坑

搜索引擎 网络上 如下代码


set FTP_HOST=192.168.1.100 21
set FTP_USER=az
set FTP_PASS=az123

echo open %FTP_HOST%> ftp_commands.txt
echo %FTP_USER%>> ftp_commands.txt
echo %FTP_PASS%>> ftp_commands.txt
echo binary>> ftp_commands.txt
echo mput !vhdFiles!>> ftp_commands.txt
echo quit>> ftp_commands.txt
ftp -is:ftp_commands.txt

上述代码为正确代码,windows的BAT中空格会被写入 即在>> 和>前面应该紧贴需要输入的内容,绝了
echo 123>a.txt
echo 123 >a.txt
上述两句代码生成的a.txt 不相同 第二个比第一个多了一个空格【ascii 为32】

FTP 命令 补充

mput上传多文件
put单文件

CRONTAB log

Jun 15 00:00:01 zgs CRON[21808]: (root) CMD (sh /home/zgs/www.sh )
Jun 15 00:04:21 zgs CRON[21807]: (CRON) info (No MTA installed, discarding output)

crontab 定时任务 自动化运维

crontab -e 进入变价

分 时 天(不可以为0) (不可以为0) (0 7表示周日) sh *.sh

每2分钟执行一次

*/2 * * * *

每分钟执行一次
* * * * *

1:00 执行一次
0 1 * * *

1号 每分钟执行一次
* * 1 * *

1号 1:00执行一次
0 1 1 * *

每周1 1:00执行一次
0 1 * * 1

expect 自动化运维 SCP自动输入密码 FTP

apt install except

范例 upscp.exp 文件

set timeout 60

spawn scp -r ./release/ root@127.0.0.1:/opt/

expect “*password:”

send “123456\n”

expect eof

解释 解释 解释 解释 解释

设置超时未60秒,默认10秒 若使用SCP FTP传输 10秒可能无法将全部信息发送 建议更具文件大小设置

写完之后 将文件保存为 upscp.exp,每个expect脚本spawn只能使用一次,相当于监控该命令

添加写入权限 chmod +x upscp.exp

执行 ./upscp.exp 即可

可以先写一个shell脚本用于操作备份(back.sh),最后在脚本中加入exp脚本用于传输操作

./upscp.exp

#!/usr/bin/expect -f
set timeout 60
spawn scp -r ./release/ root@127.0.0.1:/opt/
expect "*password:"
send "123456\n"
expect eof
spawn ftp ftp.test.com
expect "Name"
send "user\r"
expect "Password:"
send "123456\r"
interact