2013-02-10 2 views
1

У меня есть старый сценарий, который я использую для запуска в Ubuntu. Теперь у меня есть Mac и вы хотите повторно использовать скрипт.Получить версию ОС на OS X

Кто-нибудь знает, что было бы эквивалентно следующим командам в Mac OS?

def runCmd(cmd): 
    p = subprocess.Popen(cmd, 
         shell=True, 
         stdin=subprocess.PIPE, 
         stdout=subprocess.PIPE, 
         stderr=subprocess.PIPE, 
         close_fds=True) 
    result=p.stdout.readlines() 
    s=result[0].split()[0] 
    return s 

def getKernelVer(): 
    cmd="uname -r| cut --delim=\'.\' -f1-2" 
    return runCmd(cmd) 

def getUbuntuVer(): 
    cmd="lsb_release -a | grep Release | cut -f 2" 
    return runCmd(cmd) 

Благодаря

ответ

3

uname -r работает одинаково под Дарвином. Версия ядра - это не то, о чем говорят или заботятся большинство людей, но она есть. Только Гоча, что cut не поддерживает --delim длинный вариант, так, попробуйте вместо этого:

uname -r | cut -d. -f1-2 

Ядро версий довольно сильно отличается для Дарвина, чем для Linux, хотя, так что цель работы cut здесь остается неясным. (На самом деле это не совсем понятно и в Linux, поскольку схема версий значительно изменилась с выпуском 3.0.)

Чтобы получить текущую версию Mac OS (примерно эквивалентную «выпуску», которую вы получаете для Ubuntu), вы можете использовать команду:

sw_vers -productVersion 
+0

Я получаю сообщение об ошибке на "вырезать" часть на версии ядра uname -r | cut --delim = \ '. \' -f1-2 cut: незаконный вариант - - использование: cut -b список [-n] [файл ...] cut -c список [файл ...] cut -f list [-s] [-d delim] [файл ...] – Fraz

+0

Упс, пропустил это. См. Редактирование, или просто полностью отключите часть 'cut'. – duskwuff

+2

Я бы использовал 'sw_vers -productVersion' для второго требования, людям в Apple нравится перемещать вещи. – mmgp

1

вы можете использовать модуль питона «платформы» (я не имею доступа к Ubuntu, пожалуйста попробуйте и оставьте свой вывод :)

  1. использования платформы. system(), чтобы различать Linux или Darwin
  2. вызовите платформу.release(), чтобы получить версию ядра
  3. вызовите платформу.linux_distribution() или platform.mac_ver(), чтобы получить номер версии для конкретного поставщика.

На CentOS:

$ python 
Python 2.7.5 (default, Jul 23 2013, 17:26:16) 
[GCC 4.7.2 20121015 (Red Hat 4.7.2-5)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import platform 
>>> platform.system() 
'Linux' 
>>> platform.release() 
'2.6.32-358.18.1.el6.x86_64' 
>>> platform.linux_distribution() 
('CentOS', '6.4', 'Final') 
>>> 

На OS X:

$ python 
Python 2.7.5 (default, Aug 25 2013, 00:04:04) 
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import platform 
>>> platform.system() 
'Darwin' 
>>> platform.release() 
'13.0.0' 
>>> platform.mac_ver() 
('10.9', ('', '', ''), 'x86_64')