使用此命令,我想保存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行:语法错误:意外的文件结尾
答案 0 :(得分:1)
您的问题与Paramiko无关。
这只是Python中字符串的简单连接:
stdin, stdout, stderr = ssh.exec_command('/bin/su root -c "smartctl -a /dev/' + DISK + ' > /tmp/' + DISK + '"', get_pty=True)