使用此命令,我想保存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

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

以下行产生错误:
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中产生以下错误和文件:

最佳答案

您的问题与Paramiko无关。

这只是Python中字符串的琐碎串联:

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

有关更好的选择,请参见How to insert string into a string as a variable?

10-08 03:58