SSH上存储控制器的序列号

2024-10-03 06:22:05 发布

您现在位置:Python中文网/ 问答频道 /正文

背景
我正在开发一个bash脚本,从服务器机架中的所有设备中提取序列号和部件号,我的目标是能够运行单个脚本(库存.sh)当它生成包含我需要的信息的文本文件时就离开了。我使用bash来获得最大的兼容性,rhel6.7系统确实安装了Perl和Python,但是它们有最少的库。到目前为止,除了bash之外,我还没有使用过任何东西,但是我并不反对从bash脚本调用Perl或Python脚本。在

我的问题
我需要检索序列号和零件号,从Dot Hill系统保证的SAN3824,以及设备内部的序列号。获得所需信息的唯一方法是通过SSH连接并运行以下三个命令将输出转储到本地文件:

  • 显示控制器
  • 显示FRU
  • 显示磁盘

限制:

  • 我没有安装“sshpass”,我宁愿不安装它。在
  • 控制器无法存储SSH密钥(自定义shell中没有选项)。在
  • 控制器也不能写入或传输本地文件。在
  • 机架无法访问Internet。在
  • 我看了paramiko,但是安装了Python之后我没有pip。在
  • 我也不能用CPAN。在
  • 不管有什么价值,输出都以XML格式返回。(我已经编写了在bash中解析它的代码)

现在我认为我最好的选择是在文件夹中放一个Python或Perl库和其他脚本,并编写一个脚本将命令的输出转储到可以用bash脚本解析的文件中。哪种语言更容易在文件中提供库?我在找一个尽可能小而简单的图书馆。我只需要一种将这些命令的输出转换为XML文件的方法。现在我只在脚本中使用ssh 3次,每次都必须输入密码。在


Tags: 文件方法命令服务器脚本bash信息系统
2条回答

最后我联系了制造商,问了我的问题。他们说系统没有设置没有密码的连接,他们的SNMP是非常基本的,不会提供我需要的信息。他们说用FTP连接到系统并使用“getlogs”下载配置和日志的存档。不太理想,因为只运行一个命令需要4分钟,但这似乎是我唯一的选择。下面是我编写的脚本,通过将登录凭据添加到.netrc文件来自动检索文件。这适用于RHEL 6.7:

#!/bin/bash
#Retrieve the logs and configuration from a Dot Hill Systems AssuredSAN 3824 automatically.
#Modify "LINE" and "HOST" to fit your configuration.
LINE='machine <IP> login manage password <password>'
HOST='<IP>'
AUTOLOGIN="/root/.netrc"
FILE='logfiles.zip'
#Check for and verify the autologin file
if [ -f $AUTOLOGIN ]; then
    printf "Found auto-login file, checking for proper entry... \r"
    READLINE=`cat $AUTOLOGIN | grep "$LINE"`
    #Append the line to the end of .netrc if file exists but not the line.
    if [ "$LINE" != "$READLINE" ]; then
        printf "Proper entry not found, creating it...                       \r"
        echo "$LINE" >> "$AUTOLOGIN"
    else
        printf "Proper entry found...                                        \r"
    fi
#Create the Autologin file if it doesn't exist
else
    printf "Auto-Login file does not exist, creating it and setting permissions...\r"
    echo "$LINE" > "$AUTOLOGIN"
    chmod 600 "$AUTOLOGIN"
fi
#Start getting the information from the controller. (This takes a VERY long time)
printf "Retrieving Storage Controller data, this will take awhile...              \r"
ftp $HOST << SCRIPT
get logs $FILE
SCRIPT
exit 0

这给了我一堆压缩文件,但我只需要“存储日志”文件。它大约有500000行,第一部分是XML格式的整个配置,然后是文本格式的配置,然后是系统的日志。我对文件进行了解析,并在末尾剥离了日志,将文件缩减到15000行。从那里我把它分成两个文件(配置.xml以及配置文件). 然后,我把我需要的3个命令的XML输出拉到我之前编写的脚本搜索的3个文件中。现在,我的库存脚本将需要的所有内容都拉入,尽管由于等待系统生成zip文件需要4分钟,所以速度相当慢。我希望这对将来的人有帮助。在

编辑:
等待系统编译4分钟的时间太长了。所以我最后使用paramiko和python脚本将命令的输出转储到其他代码可以解析的文件中。它接受控制器的IP作为参数。这是给感兴趣的人的剧本。再次感谢你的帮助。在

^{pr2}$

看看SNMP。您可以使用SNMP工具远程提取所需的合理信息。制造商应该能够为您提供mib。在

相关问题 更多 >