shell写一个sftp脚本
时间: 2024-05-11 16:18:16 浏览: 85
以下是一个示例的SFTP脚本,用于通过SFTP将本地文件上传到远程服务器:
```bash
#!/bin/bash
HOST="example.com"
USER="username"
PASSWORD="password"
REMOTE_DIR="/remote/directory"
LOCAL_FILE="/path/to/local/file"
# Connect to remote server
echo "Connecting to $HOST..."
sftp $USER@$HOST << EOF
# Enter password
password $PASSWORD
# Set remote directory
cd $REMOTE_DIR
# Upload local file
put $LOCAL_FILE
# Exit sftp
quit
EOF
echo "File uploaded to $REMOTE_DIR"
```
请将 `HOST`, `USER`, `PASSWORD`, `REMOTE_DIR` 和 `LOCAL_FILE` 替换为您自己的值。在运行脚本前,确保您已经安装了SFTP客户端。
相关问题
写一个shell脚本,使用sftp上传文件夹下面所有文件到服务器上
在Shell脚本中,你可以使用`sftp`命令配合通配符`*`来上传指定目录下的所有文件到远程服务器。以下是一个基本的示例,假设你想将当前目录下的`myfolder`文件夹及其内容上传到名为`username@server.com`的服务器的`/path/to/destination`路径:
```bash
#!/bin/bash
# 定义源路径、目标路径和用户名密码
src_dir="myfolder"
dest_path="/path/to/destination"
# 登录信息
remote_user="username"
remote_host="server.com"
remote_password="your_password" # 将实际密码替换这里
# 使用sftp上传文件
echo "Uploading $src_dir to $remote_host..."
sftp -o "StrictHostKeyChecking=no" "$remote_user@$remote_host" << EOF
cd "$dest_path"
put "$src_dir"/*
bye
EOF
# 检查是否成功上传
if [ $? -eq 0 ]; then
echo "Upload successful."
else
echo "Upload failed. Check the logs for more details."
fi
```
在这个脚本中,`-o StrictHostKeyChecking=no`是为了避免首次连接时询问主机密钥验证,如果安全级别较高,可以移除这条选项并手动处理。
保存此脚本为`upload_files.sh`,然后通过`chmod +x upload_files.sh`使其可执行,并运行`./upload_files.sh`来执行上传操作。
写一个shell脚本,定时发送sftp文件
好的,以下是一个简单的shell脚本,用于定时发送sftp文件:
```
#!/bin/bash
# 设置变量
SFTP_USERNAME="your_username"
SFTP_PASSWORD="your_password"
SFTP_HOST="sftp.example.com"
SFTP_PORT="22"
LOCAL_FILE="/path/to/local/file"
REMOTE_FILE="/path/to/remote/file"
# 连接sftp服务器并发送文件
sftp -P $SFTP_PORT $SFTP_USERNAME@$SFTP_HOST <<EOF
put $LOCAL_FILE $REMOTE_FILE
quit
EOF
```
将上面的脚本保存为一个文件,例如`send_sftp_file.sh`,然后使用`crontab`命令添加一个定时任务,例如每天晚上7点自动发送文件:
```
0 19 * * * /bin/bash /path/to/send_sftp_file.sh
```
注意将上面的路径替换为实际的文件路径。这样,当定时任务触发时,脚本将会连接到指定的sftp服务器,并将本地文件发送到指定的远程路径。
阅读全文