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