统计多台linux服务器容量脚本

现在我有一个文件(servers.txt),里面记录了若干个服务器账号密码,我需要统计里面的服务器的剩余容量并输出到output.txt文件中。

示例如下:

192.168.1.100|root|password
192.168.1.101|admin|p@ssw0rd

废话不多说,直接上代码:

@echo off

echo. > output.txt

for /f "tokens=1-3 delims=," %%a in (servers.txt) do (

  echo Connecting to %%a with %%b/%%c
  for /f "tokens=1" %%i in ('plink -batch -pw "%%c" "%%b@%%a" "df -h --total --exclude-type=fuse.glusterfs --exclude-type=fuse.seaweedfs | grep total | awk \"{print \$4}\""') do (
    echo %%a:%%i >> output.txt
  )
)

注意,这个脚本使用了 plink 工具,它是一个命令行版本的 PuTTY,可以用于在 Windows 上连接到远程服务器。 你可以在这里下载 plink

https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

  • –exclude-type 用来排除一些挂载的类型,以免统计进去 ,我这边排除了seaweed gluster类型的挂载,要查看文件系统类型可以以下命令查看
df -hT 

注意事项:

第一次使用脚本的时候可能因为没有将host添加信任而报错,所以建议第一次使用手动模式连接。

去掉了-batch模式,skip了“确认信息”的行。

@echo off

echo. > output.txt

for /f "tokens=1-3 delims=," %%a in (servers.txt) do (

  echo Connecting to %%a with %%b/%%c
  for /f "tokens=1 skip=1" %%i in ('plink -pw "%%c" "%%b@%%a" "df -h --total --exclude-type=fuse.glusterfs --exclude-type=fuse.seaweedfs | grep total | awk \"{print \$4}\""') do (
    echo %%a:%%i >> output.txt
  )
)

执行的时候,敲击回车键,按提示信息输入Y,将host添加到信任命令,执行完毕即可。

output.txt输出结果示例:

192.168.1.100:322G 
192.168.1.101:11T

你可能感兴趣的:(服务器,服务器,linux,运维)