You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PuTTY中实现读取名称文件并自动回应Red Hat Linux服务器确认提示的脚本

如何在PuTTY中实现读取名称文件并自动回应Red Hat Linux服务器确认提示的脚本

嘿,完全懂你手动处理上百个名称的痛苦!其实核心是在Red Hat服务器端写个批量处理脚本,PuTTY只是用来连接执行的工具,下面给你两种实用方案,一步步来:

方案一:在服务器上编写bash批量脚本(最推荐)

直接在Red Hat服务器上创建脚本,处理本地的名称文件,这样更稳定:

  1. 先创建脚本文件(比如batch_delete_snapshots.sh),用编辑器打开:
nano batch_delete_snapshots.sh
  1. 把下面的代码粘贴进去,根据你的实际情况调整文件路径和命令:
#!/bin/bash
# 替换成你的名称文件路径,每行一个服务器名
input_file="myfile.txt"

# 逐行读取文件中的名称,避免空格/特殊字符出错
while IFS= read -r server_name
do
    echo "===== 正在处理服务器: $server_name ====="
    # 自动输出"y"回应确认提示,如果只需要一次确认就用 echo y | ...
    yes | acli snapshot.delete -c 3 "$server_name"
    
    # 检查命令是否执行成功
    if [ $? -eq 0 ]; then
        echo "✅ $server_name 快照删除成功"
    else
        echo "❌ $server_name 快照删除失败"
    fi
done < "$input_file"
  1. 给脚本加执行权限:
chmod +x batch_delete_snapshots.sh
  1. 运行脚本即可批量处理:
./batch_delete_snapshots.sh

如果你的名称是存放在CSV文件里(比如带表头的server.csv),可以用这个版本的脚本跳过表头:

#!/bin/bash
input_file="server.csv"

# 跳过第一行表头,按逗号分隔读取服务器名称
tail -n +2 "$input_file" | while IFS=, read -r server_name _
do
    echo "===== 正在处理服务器: $server_name ====="
    yes | acli snapshot.delete -c 3 "$server_name"
    
    if [ $? -eq 0 ]; then
        echo "✅ $server_name 处理成功"
    else
        echo "❌ $server_name 处理失败"
    fi
done

方案二:通过PuTTY直接远程执行(无需上传脚本到服务器)

如果你不想在服务器上存脚本,可以用PuTTY的命令行工具plink.exe直接从本地触发远程操作:

情况1:本地有名称文件

在Windows的命令提示符(CMD)里运行:

plink.exe -ssh 你的用户名@服务器IP 'while IFS= read -r name; do yes | acli snapshot.delete -c 3 "$name"; done' < 本地路径\myfile.txt

情况2:本地有写好的脚本文件

把脚本存在本地(比如local_script.sh),然后用命令远程执行:

plink.exe -ssh 你的用户名@服务器IP -m 本地路径\local_script.sh

小提示

  • 先拿1-2个测试名称跑一遍脚本,确认逻辑没问题再批量操作,避免误删
  • 如果acli命令只需要一次确认,把yes |换成echo y |更高效,不会重复输出y
  • 确保你有服务器上执行acli命令的权限

备注:内容来源于stack exchange,提问作者johnism

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 10:48:06