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:
我有一个 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: