使用shell 脚本编写根据用户输入的文件名(模糊匹配)查找出来并将该文件复制到另一台(自动输入密码)服务器上添加确认查找到的文件是否符合
时间: 2024-05-07 20:23:03 浏览: 7
以下是一个简单的脚本示例:
```bash
#!/bin/bash
# 获取用户输入的文件名
read -p "请输入要查找的文件名:" filename
# 查找文件并复制到另一台服务器
echo "正在查找文件并复制,请稍等..."
scp "$filename" user@remote_server:/path/to/destination/
# 确认查找到的文件是否符合
read -p "已将文件复制到远程服务器,是否需要确认文件内容?(y/n)" confirm
if [ "$confirm" == "y" ]; then
ssh user@remote_server "cat /path/to/destination/$filename"
fi
echo "操作完成。"
```
注意,这个脚本假设你已经设置了免密码登录到远程服务器。如果没有设置,你需要先手动通过密码登录到远程服务器一次,然后使用以下命令生成公钥并将其添加到远程服务器的`authorized_keys`文件中:
```bash
ssh-keygen -t rsa
ssh-copy-id user@remote_server
```
相关问题
使用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公钥认证方式进行登录。