写一个linux脚本,用sftp远程连接10.200.39.134 密码为hujvff,再mput上传文件,统计并echo本地总共有多少文件,上传并echo了多少文件,如果上传文件为0则echo返回“上传文件失败”并返回上传失败的原因
时间: 2024-09-27 07:05:52 浏览: 56
你可以创建一个简单的Linux bash脚本来完成这个任务。首先,确保你已经在系统上安装了`sftp`命令行工具。下面是一个示例脚本,它将执行上述操作:
```bash
#!/bin/bash
# 定义目标主机、端口和用户名
HOST="10.200.39.134"
PORT=22
USER="username" # 如果密码为"hujvff",你应该将其替换为命令行输入或其他安全方式
PASS="hujvff" # 为了避免直接在脚本中明文显示,这里仅作示例
# 连接到服务器
echo "Connecting to $HOST..."
sftp -o "PasswordAuthentication=yes" -P $PORT $USER@$HOST << EOF
cd /path/to/upload/directory # 更改为实际上传目录
put * # 上传当前目录下的所有文件
bye
EOF
# 统计本地文件数量和上传的数量
LOCAL_FILES=$(ls -1 | wc -l)
REMOTE_FILES=$(echo "$?" != "0" && echo "0" || sftp -o "PasswordAuthentication=yes" -P $PORT $USER@$HOST 'wc -l')
if [ "$REMOTE_FILES" -eq "0" ]; then
echo "Upload failed."
echo "Reason: No files were uploaded."
else
echo "Local files: $LOCAL_FILES"
echo "Uploaded files: $REMOTE_FILES"
fi
```
**重要提示:**这个脚本中的密码是通过`-o PasswordAuthentication=yes`硬编码的,这在生产环境中是非常危险的,因为密码会暴露在脚本内容中。通常,你会选择加密传输(如SSH密钥对)或者其他安全的方式来传递密码。
为了运行此脚本,你需要将其保存为例如`upload_script.sh`,然后在终端中添加执行权限(`chmod +x upload_script.sh`),然后运行`./upload_script.sh`。
阅读全文