分享我煉制的腳本神器,powershell版《tcp-ping》
script 腳本 powershell tcp ping ipv6
powershell 傳教士 原創文章。始于 2023-04-03 允許轉載,但必須保留名字和出處
---【前言】---
我寫了個powershell腳本 tcp--ping-v3.ps1。它支持在linux下ping ipv6地址。
但最近接到反饋,說不支持。實際上是幫助信息不好,所以我做了更改,完善了。就寫了此貼。
先一鍵安裝linux版powershell
https://gitee.com/chuanjiao10/kasini3000_agent_linux
下載地址:
https://gitee.com/chuanjiao10/kasini3000/blob/master/tcp--ping-v5.ps1
腳本功能說明:
先把域名解析成ip,或把k8s的service名解析成pod的ip,然后挨個tcp連接。并用 綠色 表示通了。紅色表示不通。
在linux下,tcping,ipv6端口用法:(用法改了)
./tcp--ping-v5.ps1 ip 端口 -AdapterNameLinux 'eth0'
建議搭配此腳本使用:fh返回網卡名_mac_ip_linux.ps1

-AdapterNameLinux 'eth0' 是v5版腳本新增參數。在linux下不用ipv6,不需要此參數。
---【正文:憑什么你煉制的是神器?憑什么你這腳本世界第一?】---
1本腳本是【多線程】級別:
支持多線程并發例子:
$csv = import-csv -path 'd:\file.csv' $csv | foreach-object -Parallel { /xxx/tcp--ping-v5.ps1 -MyComputerName $_.'域名或ip' -port $_.'端口' }
【多進程】級別的壞處很明顯,不適太合批量,你tcping一千個端口,就要fork一千次進程。說白了就是占cpu,內存多。
golang做不到;任何二進制程序做不到;py的話分2中情況:如果你從shell命令行調用,每次一個ip,那就是python -f x.py,這也是多進程級的。
2腳本是明文的:盡量用開源的二進制程序,減少被藏-毒的風險。
golang做不到;任何二進制程序做不到;
3腳本跨平臺。1個腳本文件,win,linux通用。
golang做不到;任何二進制程序做不到;py可以。
4本腳本解析dns,是k8s的絕佳伴侶:
一遍遍地tcp--ping.ps1,就可以測試k8s集群中,
1 測試k8s cluster 域名解析是否正常,是否少解析出了幾個pod ip。
2 解析10遍k8s cluster域名,測試是否有幾遍,解析過程會卡住。
3 測試每個k8s pod的【某端口】是否全通。
為啥必須得用:
1 先把域名解析成ip,然后挨個tcp連接。(如圖所示)linux的tcping無此功能。顧此特色世界唯一!

2 當你使用iptable作為k8s的虛擬路由器時,不能使用ping來測試集群是否通。因為iptable不轉發icmp。
---【后記】---
問:為什么不用linux的tcping?
答:tcping除了不解析ip外,還不支持ipv6
“linux的tcping還有這等限制,我也算讀過不少上古典籍,怎么沒聽說過此事?”二愣子韓立眉頭皺起說道。
“韓兄以為我想用powershell版嗎?這也是被逼無奈之事。大部分linux古書上只是記載了tcping的神妙,但是卻很少有修士記錄它的缺陷。
我輩修士一用才發現,并不顯示解析的ip,還不支持ipv6。韓兄,不信你試試” 紫靈苦笑一聲無奈的說道。
-煉制神器,必須有精益求精的精神。謝謝觀看完-
posted on 2023-04-04 16:32 PowerShell免費軟件 閱讀(536) 評論(0) 收藏 舉報
浙公網安備 33010602011771號