PowerShell免费软件

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

导航