Bash 到 python 脚本转换

Bash to python script conversion

我有一个 bash 脚本来检测 USB 连接的硬盘驱动器。我想在 python 脚本中将其转换为 SSH 连接。

#!/bin/bash

for disk in /dev/sd?
do
        detect=$(udevadm info $disk | grep USB)
        if [[ "$detect" == *USB ]]; then
                echo "$disk is a USBDISK.."
        fi
done

我试过了,但没用。我对 for 循环和 if 语句中的条件有问题:

import paramiko

for disk in "/dev/sd*" :
        CMD = 'udevadm info %s | grep USB' % disk
        stdin, stdout, stderr = client.exec_command(CMD, get_pty = True)
        detect = stdout.read()
        if detect == '*USB' :
            print "disk is a USBDISK.."

谢谢。

正如 Selcuk 所提到的,您正在遍历字符串而不是文件夹的内容。当你这样做时:

for disk in "/dev/sd*" :

您正在像列表中那样逐个字符地遍历字符串 ['/','d','e','v','/','s','d','*']

Python 在引用字符串和路径时与 bash 的工作方式不同。查看来自 ghostdog74 的这个答案,了解如何循环遍历目录内容。

这可以解决 if 条件下的问题。作为建议,您可以考虑是否要检查以下情况: 确切字符串:

if detect == '*USB' :

或字符串包含:

if '*USB' in detect: