为什么说《ps1屠龙刀》是awk、sed的恩人?
---【前言】---
《kasini3000》是我开发的一套批量运维工具软件,支持多云。灵感来自于“要你命三千”
“要你命三千”是:3000个究极砂仁工具。而“kasini3000”是:3000种批量运维神器。
《ps1屠龙刀》,《win-linux批量运维宝》,《ps1脚多多》是其别名。
linux命令转义,ssh远程传【代码块】一直是个麻烦。
powershell用下述方法,解决了这个问题:
$a=@" #win,linux命令。这里的命令支持引用变量。支持任意个单双引号,即单双引号不成对。 "@ $a=@' #win,linux命令。这里的命令不支持引用变量。支持任意个单双引号,即单双引号不成对。 '@ $a={ #win,linux命令。这里的命令支持引用变量。单双引号必须成对 }
---【正文】---
使用场景:比如你写好了本地sed替换nginx。conf中的某些字串,然后你想远程批量替换时。
kasini3000的命令运行器叫做krun。有多个略有差别的krun
ssh和krun是类似的东西,都是远程发送指令。
用法是:
./k_run_ip -ip 被控机ip { 被控机命令 }
你是否曾经想过,为什么ansible成了气候?
为什么没有基于shell的远程批量运维工具?
为什么无法通过ssh发送多行脚本?而非要用expect
kasini3000中,没有这些问题:
(下列命令是真实命令,有具体作用。在centos8上测试通过,在krun远程中测试通过)
#不需要转义 $被控机bash命令的结果_返回到主控机powershell变量 = k_run_ip -ip 1.2.3.4 { $bash的cmd = @' netstat -an | awk ' /LISTEN/{next};/^tcp/{s=split($5, N,":"); \ A[N[s-1]]++} END{ for (a in A) print a, A[a]} ' '@ ${bash的cmd} | /bin/bash } #不需要转义 $被控机bash命令的结果_返回到主控机powershell变量2 = k_run_ip -ip 1.2.3.4 { $bash的cmd = { netstat -an | awk ' /LISTEN/{next};/^tcp/{s=split($5, N,":"); \ A[N[s-1]]++} END{ for (a in A) print a, A[a]} ' } ${bash的cmd} | /bin/bash }
---【后记】---
ssh和krun是类似的东西,都是远程发送指令。
但krun不需要转义,支持多行代码(即代码块),从主控机发送到被控机(而不是放入脚本)。
还支持把代码块保存在主控机变量中,支持远程来回传对象,远程远程来回传代码块。
你见过shell脚本中有,用ssh发送awk,sed,还不转义的代码吗?
kasini3000,简直是awk,sed的恩人。
kasini3000的口号是:“丢弃yaml(压马路),kasini3000让win,linux命令行再次伟大!”
powershell是开源,免费,跨平台,绿色(复制后,或解压后,即可运行的。这一点比python好)软件。
posted on 2023-02-23 15:56 PowerShell免费软件 阅读(187) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端