使用shell 脚本编写根据用户输入的文件名(模糊匹配)查找出来并将该文件复制到另一台(自动输入密码)服务器上并改成输入名称
时间: 2024-05-16 08:16:48 浏览: 142
可以使用以下脚本实现:
```shell
#!/bin/bash
read -p "请输入文件名(支持模糊匹配):" filename
read -p "请输入目标服务器IP地址:" ip
read -p "请输入目标服务器用户名:" username
read -s -p "请输入目标服务器密码:" password
echo ""
# 查找文件
file=$(find . -name "*${filename}*")
# 复制文件
if [ -n "$file" ]; then
read -p "请输入新文件名:" newname
scp "$file" "${username}@${ip}:~/newname"
echo "文件已成功复制到目标服务器!"
else
echo "未找到符合条件的文件!"
fi
```
脚本的具体实现过程如下:
1. 提示用户输入文件名,支持模糊匹配。
2. 提示用户输入目标服务器的 IP 地址、用户名和密码。
3. 使用 `find` 命令查找符合条件的文件。
4. 如果找到了文件,则提示用户输入新文件名,并使用 `scp` 命令复制文件到目标服务器上。
5. 如果未找到符合条件的文件,则输出提示信息。
注意,需要将脚本保存为一个可执行文件,并且需要在本地和目标服务器上安装 `ssh` 和 `scp` 命令。另外,为了安全起见,建议将目标服务器的密码保存在一个单独的文件中,并设置只有当前用户能够读取该文件的权限。
相关问题
使用shell 脚本编写根据用户输入的文件名(模糊匹配)查找出来(确认查找到的文件是否正确)并将该文件scp到另一台(自动输入密码)服务器上添加确认查找到的文件是否符合
以下是一个简单的脚本,可以实现根据用户输入的文件名模糊匹配,查找文件并将其scp到另一台服务器上。在脚本中,使用了read命令获取用户输入,使用find命令查找文件,使用sshpass命令自动输入密码进行scp操作。
```bash
#!/bin/bash
# 获取用户输入的文件名
read -p "请输入文件名:" file_name
# 在当前目录及其子目录下查找文件
find . -name "*${file_name}*" > file_list.txt
# 显示查找到的文件列表
echo "查找到的文件列表:"
cat file_list.txt
# 提示用户输入要传输到哪台服务器
read -p "请输入目标服务器IP地址:" server_ip
# 提示用户输入目标服务器用户名
read -p "请输入目标服务器用户名:" server_user
# 提示用户输入目标服务器密码
read -s -p "请输入目标服务器密码:" server_password
# 循环读取文件列表
while read file_path; do
# 确认要传输的文件是否正确
read -p "确认要传输文件 ${file_path} 吗?[Y/N]:" confirm
if [[ ${confirm} == "Y" ]] || [[ ${confirm} == "y" ]]; then
# 使用sshpass命令自动输入密码进行scp操作
sshpass -p "${server_password}" scp ${file_path} ${server_user}@${server_ip}:~/remote_dir/
echo "${file_path} 传输完成!"
fi
done < file_list.txt
# 删除临时文件
rm -f file_list.txt
```
需要注意的是,使用sshpass命令自动输入密码进行scp操作存在安全风险,建议使用SSH公钥认证方式进行登录。
编写一个shell脚本,要求用户输入一个文件名,然后将用户输入的内容保存到该文件中,并使用输入重定向将错误信息输出到error.log文件中。
编写一个简单的bash shell脚本来完成这个任务,你可以参考以下代码:
```bash
#!/bin/bash
# 提示用户输入文件名
echo "请输入要保存内容的文件名:"
read filename
# 检查文件名是否为空
if [ -z "$filename" ]; then
echo "文件名不能为空!"
error="Input is empty."
>> error.log
else
# 提示用户输入内容并保存到文件
echo "请输入内容:"
read content
echo $content > $filename
# 如果保存过程中有错误,将错误信息追加到error.log
if [ $? -ne 0 ]; then
echo "保存文件失败: $?"
error="Save failed with error code $?"
>> error.log
else
echo "内容已成功保存到$filename"
fi
fi
# 将错误信息写入error.log文件
echo "错误信息: $error" >> error.log
# 显示最终的error.log状态
cat error.log
```
这个脚本首先提示用户输入文件名,如果文件名为空,则会记录错误信息到`error.log`。接着让用户输入内容并尝试保存,如果有保存错误,它会捕获返回码并追加到错误日志。最后,它还会显示error.log文件的内容。
阅读全文