为什么说《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免费软件 阅读(179) 评论(0) 编辑 收藏 举报