使用paramiko

时间:2018-04-11 14:34:48

标签: python python-2.7

使用此命令,我想保存sda驱动器的smartctl命令的输出。 现在,因为我使用RAID,所以我有多个驱动器,而不仅仅是sda。

以下命令正常工作:

stdin, stdout, stderr = ssh.exec_command('/bin/su root -c "smartctl -a /dev/sda > /tmp/smartctl_output1"', get_pty=True) # ORIGINAL

我想实现我传递包含sda,sdb,sdc等本地Python变量“DISK”而不是静态值。

以下行产生错误:

stdin, stdout, stderr = ssh.exec_command('/bin/su root -c "smartctl -a /dev/" + DISK + " > /tmp/" + DISK', get_pty=True)

编辑也尝试了这个:

        stdin, stdout, stderr = ssh.exec_command('/bin/su root -c "smartctl -a /dev/' + DISK + ' > /tmp/' + DISK, get_pty=True)
        stdin.write(ROOTPASS)
        stdin.write('\n')
        DEBUG1=stdout.read()
        print   "DEBUG COMMAND= " + DEBUG1

产生以下错误并且未创建/ tmp / + DISK中的文件:

DEBUG COMMAND= bash: -c: line 0: unexpected EOF while looking for matching `"'

bash:-c:第1行:语法错误:意外的文件结尾

1 个答案:

答案 0 :(得分:1)

您的问题与Paramiko无关。

这只是Python中字符串的简单连接:

stdin, stdout, stderr = ssh.exec_command('/bin/su root -c "smartctl -a /dev/' + DISK + ' > /tmp/' + DISK + '"', get_pty=True)