Centos系统下载大全 | Redhat系统下载大全 | Windows2012系统下载大全 | Windows2008系统下载大全| CMS教程 | 网站地图 51运维网-专注Linux/Unix系统安全运维!
当前位置:51运维网 > 编程 > Shell > 正文

一个可以检测网络内主机类型的脚本

时间:2016-06-26 21:56 来源:网络整理 作者:linux系统 阅读:

一个可以检测网络主机类型脚本

时间:2014-01-15 22:21来源:51cto.com 作者:handsome7038 的BLOG 举报 点击:次

最近一直在写一个自动检测网络内主机类型的脚本。基本功能可以实现判断主机操作系统类型, 【linux操作系统】 【linux命令大全】 ,如果是域内的主机可以获取主机的硬件参数和性能参数,并判断是否存在网络设备。对一个运维人员来说往往需要尽快熟悉一个陌生的网络。所以这个脚本就很方便了,如果有更好的建议欢迎指正感谢!

############################################ #Author:Lixiaosong #Email:lixiaosong8706@gmail.com #For:检测/24掩码网络内主机系统类型并获取windows主机参数 #Version:1.0 ############################################## Param( [Parameter(Mandatory=$true)]$Network ) $Ip=for($i= 1; $i-ile255; $i+= 1){"$Network.$i"} foreach($Ipaddressin$IP){ #检测相关端口状态 $Port3389=3389 | %{ echo ((new-objectNet.Sockets.TcpClient).Connect("$Ipaddress",$_)) "$true"} 2>$null $Port22=22 | %{ echo ((new-objectNet.Sockets.TcpClient).Connect("$Ipaddress",$_)) "$true"} 2>$null $Port23=23 | %{ echo ((new-objectNet.Sockets.TcpClient).Connect("$Ipaddress",$_)) "$true"} 2>$null $Pingtest=Test-connection-ComputerName$IPaddress-quiet if($Port3389-like"$true"){ #服务器信息 $HostSN=(GWMI-ComputerName"$Ipaddress"win32_bios).SerialNUmber $HostFirm=(GWMI-ComputerName"$Ipaddress"win32_bios).Manufacturer $HostModel=(GWMI-ComputerName"$Ipaddress"Win32_ComputerSystem).Model #主机信息 $HostName=(GWMI-ComputerName"$Ipaddress"Win32_ComputerSystem).DNSHostName $DomainName=(GWMI-ComputerName"$Ipaddress"Win32_ComputerSystem).Domain #服务器硬件资源信息 $Freemem=(GWMI-ComputerName"$Ipaddress"win32_OperatingSystem).FreePhysicalMemory#空余物理内存 $Totalmem=(GWMI-ComputerName"$Ipaddress"win32_OperatingSystem).TotalVisibleMemorySize#总物理内存 $cpu=((get-counter-ComputerName"$IPaddress"-counter"\processor(_total)\% processor time").CounterSamples|where{$_.InstanceName -eq"_total"}).CookedValue $DiskRead=" {0:0.0} KB"-f($(((get-counter-ComputerName"$Ipaddress"-counter"\LogicalDisk(_total)\Disk Read Bytes/sec").CounterSamples|where{$_.InstanceName -eq"_total"}).CookedValue) / 1KB) $DiskWrite="{0:0.0} KB"-f($(((get-counter-ComputerName"$Ipaddress"-counter"\LogicalDisk(_total)\Disk Write Bytes/sec").CounterSamples|where{$_.InstanceName -eq"_total"}).CookedValue) /1KB) $NetworkSent=" {0:0.0} KB"-f($((Get-Counter-ComputerName"$Ipaddress"-Counter"\Network Interface(*)\Bytes Sent/sec").CounterSamples|%{$_.CookedValue}|sort|select-last1) / 1KB) $NetworkReceive=" {0:0.0} KB"-f($((Get-Counter-ComputerName"$IPaddress"-Counter"\Network Interface(*)\Bytes Received/sec").CounterSamples|%{$_.CookedValue}|sort|select-last1) / 1KB) $Havecpu= "{0:0.0} %"-f$cpu $Permem="{0:0.0} %"-f((($Totalmem-$Freemem)/$Totalmem)*100) $Disks= GWMI-ComputerName"$IPaddress"win32_logicaldisk|?{$_.drivetype -eq3} #获取域内Windows主机参数 Write-host" ================================================================================================================= 时间:$(get-date) WINDOWS服务器:$HostName.$DomainName IP:$($IPaddress.Padleft(2)) 品牌:$($HostFirm.Padleft(2)) 型号:$($HostModel.Padleft(2)) 序列号:$($HostSN.Padleft(2)) CPU使用率:$($Havecpu.Padleft(8)) 内存使用率:$($Permem.Padleft(13)) 磁盘读/秒:$($DiskRead.Padleft(8)) 磁盘写/秒:$($DiskWrite.Padleft(13)) 网络发送/秒:$($NetworkSent.Padleft(8)) 网络接收/秒:$($NetworkReceive.Padleft(13)) 盘符 盘总空间 空闲空间 使用空间 使用百分比"-ForegroundColorGreen foreach($Diskin$Disks){ $Size= "{0:0.0} GB"-f($Disk.Size / 1GB ) $FreeSpace= "{0:0.0} GB"-f($Disk.FreeSpace / 1GB) $Used= ([int64]$Disk.size - [int64]$Disk.freespace) $SpaceUsed= "{0:0.0} GB"-f($Used/ 1GB) $Percent="{0:0.0} %"-f($Used* 100 / $Disk.Size) $n=3 Write-Host" "$Disk.deviceid.PadRight($n)-no-ForegroundColorGreen $n=10 Write-Host$Size.Padleft($n)-no-ForegroundColorGreen Write-Host$FreeSpace.Padleft($n)-no-ForegroundColorGreen Write-Host$SpaceUsed.Padleft($n)-no-ForegroundColorGreen Write-Host$Percent.Padleft($n)-ForegroundColorGreen } } #判断linux主机 if($port22-like"$true"){ write-host" ================================================================================================================ 服务器:$IPaddress 开放端口:"22" 可能是一台是"linux"主机"-ForegroundColorYellow } #判断网络设备 if($port23-like"$true"){ Write-host" ================================================================================================================ 服务器:$Ipaddress 开放端口:"23" 可能是一台"网络"设备"-ForegroundColorCyan } #主机不存在 if($Pingtest-like"$False"){ Write-host" ================================================================================================================ 服务器:$Ipaddress 此主机不存在"-ForegroundColorRed } }

使用方法举例:

1 将脚本保存至c:\

2 运行powershell 执行PS C:\> .\test.ps1 10.7.2 #只需输入网络的前三位

PS C:\> .\test.ps1 10.7.2


------分隔线----------------------------

  • 上一篇:批量copy文件shell脚本
  • 下一篇:Bash脚本实现批量作业并行化
  • 【linux命令大全】

    感谢您对【51运维网 http://www.51ou.com/】的支持,我们为您免费提供《一个可以检测网络内主机类型的脚本》技术文章,《一个可以检测网络内主机类型的脚本》详细使用和说明,有时《一个可以检测网络内主机类型的脚本》可能不完善、敬请谅解!如果《一个可以检测网络内主机类型的脚本》有错误请给我们留言,我们将尽快修复文章错误,如果您觉得本站不错,请分享给周围的朋友!谢谢!

    顶一下
    (0)
    0%
    踩一下
    (0)
    0%
    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    验证码:点击我更换图片