2015-05-03 7 views
5

Vorrei aggiungere un controllo in uno script python 2.7.x in forma diCome verificare se il sistema è FreeBSD in uno script Python?

if __check_freebsd__(): 
    # run actions which would only work on FreeBSD (e.g. create a jail) 
elif __check_debian__(): 
    # run an alternative that runs on Debian-based systems 
else: 
    raise Error("unsupported OS") 

Come sarebbe la funzione __check_freebsd__ assomigliare?

ho il seguente codice per __check_debian__ già:

try: 
    lsb_release_id_short = sp.check_output([lsb_release, "-d", "-s"]).strip().decode("utf-8") 
    ret_value = "Debian" in lsb_release_id_short 
    return ret_value 
except Exception: 
    return False 

Quindi non c'è bisogno di perdere tempo con esso (proposte di miglioramento sono i benvenuti, naturalmente).

risposta

2

Come detto in documentation,

platform.system() 

restituisce il nome del sistema operativo della piattaforma, in modo da poter utilizzare questo. In this thread è possibile visualizzare anche diversi approcci per controllare il sistema operativo sottostante.

+0

'se platform.system() == 'FreeBSD'' dovrebbe funzionare, per quanto mi riguarda. Karl ha chiesto il controllo di freeBSD, quindi penso di non aver bisogno di controllare le distro di Linux. Se ho torto, per favore correggimi. – Adalee

+0

Funziona su FreeBSD 9.3 e FreeBSD 10.0. –

1

Vedere os.uname.

Non sono sicuro al 100%, ma probabilmente sarebbe qualcosa come os.uname()[0] == "FreeBSD".

1

Prova questo:

>>> from sys import platform 
>>> platform() 
# on my system I get 
'linux' # check string for freebsd 

anche:

# below are my results 
>>> import platform 
>>> platform.system() 
'Linux' # would be 'FreeBSD' if I was using that 
>>> platform.platform() 
'Linux-3.19.0-15-generic-x86_64-with-Ubuntu-15.04-vivid' 
+0

'platform.linux_platform()' restituisce '('', '', '')' in FreeBSD 9.3 (eseguito su 'qemu' 2.2). –

+0

@KarlRichter è solo per Linux, quindi non funzionerebbe per FreeBSD, suppongo. platform.system() è multipiattaforma però come è sys.platform – Totem

+0

vedo. Quindi non è una risposta alla mia domanda, vero? Forse questo è dovuto a 'qemu'? –

Problemi correlati