我计划使用Shell,Python中的一组脚本自动清理Linux中的文件系统,我将使用Node创建一个简单的仪表板.js以允许更直观的方法。
我在 Shell 中有一个脚本,它已经清理了特定服务器中的文件系统 - 但我必须登录然后发出此命令。现在,我正在继续使用HTML/CSS/JS中的仪表板,以可视化所有存在空间问题的服务器。
我的想法是:创建一个 Python 脚本来登录并获取文件系统及其用法的列表并更新单个 JSON 文件,然后,我的仪表板使用此 JSON 来馈送屏幕。
我的问题是如何获取 Linux 中的文件系统列表及其使用情况?
要远程连接到 ssh 并检索包含文件系统和用法的列表,您可以使用 paramiko SSH 客户端和 df 命令,如下所示:
要使用 pip 问题安装帕拉米科:
sudo pip install paramiko
正则表达式模块应默认安装
import paramiko, re
server = "your_server_ip_or_name"
username = "your_ssh_user"
password = "your_ssh_password"
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(server, username=username, password=password)
ssh_stdin, ssh_stdout, ssh_stderr = ssh.exec_command("df")
filesystems = []
for line in ssh_stdout.readlines()[1:]:
line = re.sub('s+', ' ', line).strip()
parameters = line.split(' ')
usage_percent = re.findall(r'd+', parameters[4])
filesystems.append({'name' : parameters[0], 'usage' : usage_percent[0]})
print filesystems
它将生成一个包含键名称和用法的字典列表,如以下示例所示:
[{'usage': u'17%', 'name': u'/dev/root'}, {'usage': u'0%', 'name': u'devtmpfs'}, {'usage': u'0%', 'name': u'tmpfs'}, {'usage': u'9%', 'name': u'tmpfs'}, {'usage': u'1%', 'name': u'tmpfs'}, {'usage': u'0%', 'name': u'tmpfs'}, {'usage': u'31%', 'name': u'/dev/mmcblk0p6'}, {'usage': u'0%', 'name': u'tmpfs'}]
您可以使用命令
df
提供使用"-h"以人类可读格式(例如 1K 1M 1G(显示大小的选项。这是最常见的命令,但您还可以检查 du
和 di
. 实际上,di
提供了比df
更多的信息。