Конвертация скриптов Bash в Python - PullRequest
0 голосов
/ 22 января 2019

У меня есть скрипт 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.."

Спасибо.

1 Ответ

0 голосов
/ 22 января 2019

Как уже упоминал Сельчук, вы просматриваете строку, а не содержимое папки. Когда вы делаете:

for disk in "/dev/sd*" :

Вы перебираете строку char по символу, как в списке ['/','d','e','v','/','s','d','*']

Python отличается от bash при обращении к строкам и путям. Посмотрите на этот ответ из ghostdog74 , чтобы узнать, как проходить по содержимому каталога.

Это может исправить проблемы с условием if. В качестве рекомендации вы можете рассмотреть возможность проверки условия для: Точная строка:

if detect == '*USB' :

или для включения строки:

if '*USB' in detect:
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...