写一个脚本查找用户输入的文件名称(模糊匹配)输出查找到的文件;如果没找到提示未找到文件;然后提示用户输入ip,和通道编号,然后将该文件拷贝到msdfes1:/home/d5000/sichuan/data/cer_data/“通道编号”.cer 和msqfes1:/home/d5000/sichuan/data/cer_data/"ip".cer
时间: 2023-07-04 18:30:58 浏览: 51
好的,以下是一个简单的脚本来实现您的需求:
```bash
#!/bin/bash
# 询问用户输入文件名称
echo "请输入要查找的文件名称(支持模糊匹配):"
read file_name
# 查找文件并输出
search_result=$(find / -name "*$file_name*")
if [ -n "$search_result" ]; then
echo "已找到以下文件:"
echo "$search_result"
else
echo "未找到文件:$file_name"
exit 1
fi
# 询问用户输入IP和通道编号
echo "请输入IP:"
read ip
echo "请输入通道编号:"
read channel
# 复制文件到指定路径
scp $search_result msdfes1:/home/d5000/sichuan/data/cer_data/"$channel".cer
scp $search_result msqfes1:/home/d5000/sichuan/data/cer_data/"$ip".cer
```
请注意,这只是一个基本的脚本示例,可能需要根据您的实际需求进行修改和完善。另外,脚本中的文件查找可能需要花费一定的时间,具体取决于您的文件系统大小和文件数量。
相关问题
使用shell 脚本编写根据用户输入的文件名(模糊匹配)查找出来并将该文件复制到另一台(自动输入密码)服务器上并改成输入名称
可以使用以下脚本实现:
```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公钥认证方式进行登录。