Perl实现的命令行小工具sshfind:通过主机名称关键字搜索和筛选~/.ssh/config主机配置项
作用
读取SSH客户端配置文件~/.ssh/config
,根据主机名称筛选对应的主机相关配置项,适用于~/.ssh/config
主机信息过多,不便于查找的情况,如本人该文件配置了500+主机;
使用方法:
sshfind racknerd #根据racknerd作为主机名称关键字进行搜索,模糊匹配
sshfind racknerd 2 #根据racknerd作为关键字搜索,仅列出两个结果
sshfind.pl脚本代码:
#!/usr/bin/perl -W
#用途:命令行传递主机名称关键字搜索~/.ssh/config的主机配置项
#参数说明:
# $1 --- 主机名称搜索关键字
# $2 --- 要显示主机的个数限制
#Usage:
# sshfind.pl racknerd #查找主机名包含racknerd的主机
# sshfind.pl racknerd 1 #查找主机名包含racknerd的主机,仅列出一个
# sshfind.pl . 5 #查找主任意关键字主机,仅列出前5个
use strict;
my $hostName=$ARGV[0]?$ARGV[0]:""; #要搜索的SSH主机名
my $maxCount=$ARGV[1]?$ARGV[1]:0; #至多列出的主机个数,默认为0即不限制(列出所有匹配的主机)
my $showLine=0; #SSH Config行打印标记开关
my $foundCount=0; #查找到的主机个数,同一关键字可能匹配到多个主机
my $sshConfigFile="$ENV{'HOME'}/.ssh/config"; #SSH配置文件路径:(~/.ssh/config)
if(! "$hostName"){
print "缺少搜索关键字,将列出 ~/.ssh/config 全部主机!\n";
}
open(SSHCONFIG,"<$sshConfigFile") or die "$sshConfigFile 文件无法打开, $!";
while (<SSHCONFIG>) {
if(/^[\s\t]*Host[\s\t]+.*($hostName).*/i){
$showLine=1;
$foundCount+=1;
printf "\n" if $foundCount>1;
}
elsif(/^[\s\t]*Host[\s\t]+.*$/i){
$showLine=0;
}
last if $maxCount>0 and $foundCount==$maxCount+1 and $foundCount--;
print if $showLine==1;
}
print "\n找到主机 $foundCount 个\n";
使用效果:
sshfind 其他版本:
Python实现的版本:
https://www.cnblogs.com/cnhack/p/17009406.html
本文来自博客园,作者:晴云孤魂,转载请注明原文链接:https://www.cnblogs.com/cnhack/p/17009424.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性