You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
2.1 KiB
Python
63 lines
2.1 KiB
Python
#!/usr/bin/env seiscomp-python
|
|
# -*- coding: utf-8 -*-
|
|
|
|
############################################################################
|
|
# Copyright (C) 2016 by gempa GmbH #
|
|
# #
|
|
# All Rights Reserved. #
|
|
# #
|
|
# NOTICE: All information contained herein is, and remains #
|
|
# the property of gempa GmbH and its suppliers, if any. The intellectual #
|
|
# and technical concepts contained herein are proprietary to gempa GmbH #
|
|
# and its suppliers. #
|
|
# Dissemination of this information or reproduction of this material #
|
|
# is strictly forbidden unless prior written permission is obtained #
|
|
# from gempa GmbH. #
|
|
############################################################################
|
|
|
|
from __future__ import (
|
|
absolute_import,
|
|
print_function)
|
|
|
|
import subprocess
|
|
import sys
|
|
|
|
#------------------------------------------------------------------------------
|
|
# Python version depended string conversion
|
|
if sys.version_info[0] < 3:
|
|
py3bstr = str
|
|
py3ustr = str
|
|
|
|
else:
|
|
py3bstr = lambda s: s.encode('utf-8')
|
|
py3ustr = lambda s: s.decode('utf-8', 'replace')
|
|
|
|
class ProcResult:
|
|
def __init__(self):
|
|
self.error = ""
|
|
self.data = ""
|
|
|
|
def execute(cmd):
|
|
proc = subprocess.Popen(
|
|
cmd,
|
|
stdout=subprocess.PIPE,
|
|
stderr=subprocess.PIPE,
|
|
shell=True)
|
|
out = proc.communicate()
|
|
|
|
res = ProcResult()
|
|
res.data = py3ustr(out[0].strip())
|
|
if proc.returncode != 0:
|
|
res.error = py3ustr(out[1].strip())
|
|
if not res.error:
|
|
res.error = "Error: Process returned exit code: {}".format(proc.returncode)
|
|
else:
|
|
# Ignore any stderr output in case of the exit code is 0
|
|
res.error = None
|
|
|
|
return res
|
|
|
|
def write(msg):
|
|
print(msg)
|
|
sys.stdout.flush()
|