PowerShell免费软件

脚本批量备份交换机路由器配置研究


交换机 路由器 配置文件 备份 批量 脚本 powershell router switch backup ssh

powershell 传教士 原创文章。始于 2023-04-02 允许转载,但必须保留名字和出处,否则追究法律责任

 

---【前言】---

最近我看了一篇文章。讲的是:
【目的】:以5分钟为循环周期,经ssh,用密码,用py批量备份交换机、路由器配置。
路由器的备份命令,极其简单,就是【dis cur】
看完有感,就写了此贴。


---【正文:依次分析】---

 

1任务计划:
卡死你3000有最好的任务计划。它位于主控机上,这个是跨win,linux通用的。是基于心跳的高可用双机。支持如67分钟一次的循环。
对于上述目的,如果你要想有1个,跨平台,高可用的任务计划,就需要我这个。
不过,一般来讲没必要用这么强大的功能。用win,linux的任务计划就够用。


2并发批量:
并发批量快速。但本例子基本不需要。
并发批量有,防止卡单个【被控机】卡死的优势。但目标交换机,基本不存在这种情况。

2.1多进程并发:powershell v5,v7中,自带多进程并发。我觉得这里不适用。

2.2powershell v5中的多线程并发:
powershell v5中有多线程并发。自写脚本稍微有一点点麻烦,我们都安装并使用模块:PoshRSJob

2.3powershell v7中的多线程并发:
powershell v7中,有2种多线程并发。用起来都很简单。
2.3.1 Start-ThreadJob
2.3.2 foreach-object -Parallel。


3ssh客户端:
powershell,kasini3000中并不含有ssh客户端,它调用win-linux本机的客户端,如ssh.exe。但ssh.exe输入密码麻烦,这里不适用。
3.1 putty中的plink.exe。
3.2 powershell的ssh模块。如posh-ssh。
3.3 winscp的powershell模块。
在卡死你3000中,这是一个我封装的独立的脚本。c:\ProgramData\kasini3000\k_run_ip_port_winscp2bash_user_pwd.ps1
3.4 powershell的ssh命令:new-pssession。 它在ssh客户端基础上,提供了远程传代码,远程对象的功能。这里不适用。


4数据源,目标数据库:
4.1 卡死你3000后台任务结果,自动入主控机的sqlite数据库。c:\Users\你的win账号\Documents\kasini3000\cmdb\fubao2.sqlite3 或 /root/kasini3000/cmdb/fubao2.sqlite3
4.2 卡死你3000任务计划后台任务结果,自动入主控机的sqlite数据库。user_crontab.sqlite3,目录同上。
4.3 powershell,卡死你3000中,支持各种数据库客户端。

https://gitee.com/chuanjiao10/powershell

目前免费的有:sqlserver,azuresql,mysql,sqlite。etcd。
我收费分享的有:excel=10元。win,linux,通用,需要加载dll,不需要安装excel,不需要安装powershell模块。
redis=20。win,linux,通用,需要加载dll,不需要安装powershell模块。
4.4 写入文本。
4.5 csv文件。


---【结论和脚本代码】---

问:完成目的,不并发,【顺序批量】的方案是什么?
答:
下载putty,并用win任务计划,和导入csv:

$csv = import-csv -path 'd:\file.csv'
$csv | foreach-object {
    $返回 = plink.exe -batch -ssh -l root -P 端口 -pw 密码 $_ "dis cur"
    set-content -path 某个文件.txt -value $返回
}

 

 

问:完成目的,不装卡死你3000,【并发批量】的方案是什么?
答:
安装powershell7,下载putty,并用win任务计划,和导入csv:

$csv = import-csv -path 'd:\file.csv'
$csv | foreach-object -Parallel {
    $返回 = plink.exe -batch -ssh -l root -P 端口 -pw 密码 $_ "dis cur"
    set-content -path 某个文件.txt -value $返回
}

 

 

问:完成目的,不装powershell7,【并发批量】的方案有哪些?
答:
https://gitee.com/chuanjiao10/kasini3000
从上述地址,下载并解压卡死你3000,并把相关模块复制到模块目录。这样就不用装powershell v7。
去网上找到读取excel文件的代码。

$csv = import-csv -path 'd:\file.csv'
$csv | foreach-object {
    Start-RSJob -ScriptBlock {
        $返回 = plink.exe -batch -ssh -l root -P 端口 -pw 密码 $_ "dis cur"
        set-content -path 某个文件.txt -value $返回
    }
}        

 


问:卡死你3000中,plink.exe的替代脚本怎么用?
答:
.\k_run_ip_port_winscp2bash_user_pwd.ps1 -目的ip地址 $_ -用户名 'root' -密码 '交换机密码' -单行shell命令 'dis cur'
它基于这个powershell模块:winscp


问:读取excel单元格脚本,怎么用?
答:
$ip = ./read-excel-1cell2.ps1 -file /ps1/x项目审批表.xlsx -sheet_name 'sheet1' -行号 2 -列号 'f'

功能:
可用于监控;统计;win,linux,系统信息采集等。
1读【单个excel单元格】的值。read-excel-1cell2.ps1
2写【单个excel单元格】的值。write-excel-1cell2.ps1
3读【m行,n列,excel单元格】的值。read-excel-range2.ps1
4写【m行,n列,excel单元格】的值。write-excel-range2.ps1
5写【1行excel单元格】的值。write-excel-rows2.ps1
6写【1列excel单元格】的值。write-excel-colum2.ps1
7找替【m行,n列,excel单元格】的值。replace-excel-range2.ps1

 

问:不收费的,mysql等数据库客户端脚本,怎么用?
答:

$q = 'INSERT INTO xxx (aa,bb) values (11,22);'
./mysql_insert_net48t_Transaction.ps1 -query $q -server $服务器ip -port 3306 -username $账号 -pass $密码 -database 'db'

 


其中:
.net48代表.net 4.8,
t代表tls,
Transaction,代表事物。这样知道是否成功插入。


问:卡死你3000中,顺序批量的,telnet脚本是什么?
答:
用法:命令放入txt,一行一条命令。

c:\ProgramData\kasini3000\master_script\ptelnet_v1.01.ps1 -Ip "192.168.10.1" -Commands (Get-Content "c:\scripts\commands.txt")

 


卡死你3000,是这个软件第一版的开发代号。而第二版的开发代号是:
《穿云箭》
寓意:一支穿云箭,千万被控机,从斧*头*帮;)赶来相见。win-linux忠义胆,刀山火海提命令现。只要【命令】,不要【命】^_^


-完-

posted on 2023-04-02 14:53  PowerShell免费软件  阅读(562)  评论(0编辑  收藏  举报

导航