实现场景,要求客户端定时将本地的日志文件传输到服务器。
工作环境ubuntu,注意不通操作系统的版本不通,依赖的工具的版本也有所不同
实现目标需要客户端满足安装工具:
1、下载安装sshpass
---安装命令:sudo apt-get install sshpass
---使用实例:
基本传输命令如下:sshpass -p 密码 scp 本地路径文件 登录用户名@服务器地址:服务器保存路径
---传输文件夹实例:
est1为所需传输的文件夹;root是登录服务器的用户,后接着IP地址和将要存储的路径;-p后的123456是登录服务器的密码
sshpass -p 123456 scp -r test1 root@10.10.255.100:/home/test/
---传输文件实例:
home/test1/test.txt为所需传输的文件;root是登录服务器的用户,后接着IP地址和将要存储的路径;-p后的123456是登录服务器的密码
sshpass -p 123456 scp home/test1/test.txt root@10.10.255.100:/home/test/
---文件第一行读取密码连接服务器
home/test1/test.txt为要读取的文件;root是登录服务器的用户,后接着IP地址
sshpass -f home/test1/test.txt ssh root@10.10.255.100
----删除远程文件夹
/home/test为所需删除的文件夹;root是登录服务器的用户,后接着IP地址;-p后的123456是登录服务器的密码
sshpass -p 123456 ssh root@10.10.255.100 -tt rm -rf /home/test
----远程解压文件
命令:sshpass -p 密码 ssh root@ip -tt tar -xzf 远程文件.tar包 -C 解压路径
/home/test1/test.tar为所需解压的文件;/home/test2是解压路径;root是登录服务器的用户,后接着IP地址;-p后的123456是登录服务器的密码
sshpass -p 123456 ssh root@10.10.255.100 -tt tar -xzf /home/test1/test.tar -C /home/test2
【Liunx-sshpass及scp命令在linux机器间文件传输 传输文件夹 远程删除文件夹 远程解压文件 远程连接服务器_sshpass scp-CSDN博客】
2、下载安装cron工具
sudo apt update //更新Ubuntu软件包列表
sudo apt install cron //更新Ubuntu软件包列表
sudo systemctl status cron // 验证cron是否安装成功
对于系统较老的版本,使用sudo service cron status 验证是否成功
sudo service cron status
crontab -e //学习cron的基本使用方法
在crontab
文件中,每一行代表一个定时任务,格式如下:
* * * * * command_to_execute
- - - - -
| | | | |
| | | | +----- 星期几 (0 - 7) (Sunday=0 or 7)
| | | +------- 月份 (1 - 12)
| | +--------- 一个月中的第几天 (1 - 31)
| +----------- 小时 (0 - 23)
+------------- 分钟 (0 - 59)
例如:假设你有一个脚本/home/user/backup.sh
,你希望它每天凌晨3点运行:
打开crontab
编辑器
crontab -e
添加以下行到crontab
文件中:
0 3 * * * /home/user/backup.sh
保存并退出编辑器。
现在,cron
服务将每天凌晨3点自动运行/home/user/backup.sh
脚本。
3、下载安装
4、采用sshpass传输本地文件内的所有文件
通过scp命令传输文件有最大数量的限制,因此最好采用循环文件夹内所有的文件进行文件传输
传输脚本百度查询的实例:
#!/bin/bash
# 远程服务器的用户名、主机和密码
USER='your_username'
HOST='your_host'
PASS='your_password'
# 本地和远程的文件夹路径
LOCAL_DIR='/path/to/local/folder'
REMOTE_DIR='/path/to/remote/folder'
# 循环发送本地文件夹中的所有文件
for file in "$LOCAL_DIR"/*; do
filename="$(basename "$file")"
sshpass -p "$PASS" scp "$file" "$USER@$HOST:$REMOTE_DIR/$filename"
done
请确保你已经安装了 sshpass
工具,并且将脚本中的 your_username
、your_host
、your_password
、/path/to/local/folder
和 /path/to/remote/folder
替换成适当的值。
注意:明文存储密码并不安全,考虑使用更安全的方法,如 SSH 密钥或使用环境变量来传递密码。