0
import subprocess

def volumeCheck(volume_name):
    """This function will check volume name is mounted or not.
    """
volume_name = raw_input('Enter volume name:')
volumeCheck(volume_name)

print 'volume_name=',volume_name    
p = subprocess.Popen(['df', '-h'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
p1, err = p.communicate()
pattern = p1

if pattern.find(volume_name):
    print 'volume found'
else:
    print 'volume not found'

実行中、常に「ボリュームが見つかりました」という間違った結果が得られました。

root@sr-query:/# df -h
Filesystem            Size  Used Avail Use% Mounted on
rootfs                938M  473M  418M  54% /
/dev/md0              938M  473M  418M  54% /
none                  250M  4.9M  245M   2% /dev
/dev/md2              9.7M  1.2M  8.0M  13% /usr/config
/dev/md7              961M   18M  895M   2% /downloads
tmpfs                 250M  7.9M  242M   4% /var/volatile
tmpfs                 250M     0  250M   0% /dev/shm
tmpfs                 250M     0  250M   0% /media/ram
**/dev/mapper/vg9-lv9  1016M   65M  901M   7% /VolumeData/sp
/dev/mapper/vg10-lv10
                     1016M   65M  901M   7% /VolumeData/cp**
root@sr-query:/# 
root@sr-query:/# 

root@sr-query:/# python volume_check.py

Enter volume name:raid_10volume

volume_name= raid_10volume
**volume found**
root@sr-query:/# 

ここにリストされていないraid_10volumeを入力しました.df -hコマンドの出力(spとcpの2つのボリュームのみ)を確認してから、他の部分に到達した方法を確認してください。私のコードで何が間違っていますか? 前もって感謝します。

この作業を行う他の方法はありますか ! ?

4

1 に答える 1

2

patternは文字列であるため、findパターンが見つからない場合、メソッドは -1 を返します。比較行を次のように変更する必要があります。

if pattern.find(volume_name) != -1:
于 2012-10-18T11:00:57.527 に答える