/usr/share/pyshared/application/system.py is in python-application 1.2.8-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | # Copyright (C) 2006-2011 Dan Pascu. See LICENSE for details.
#
"""Interaction with the underlying operating system"""
__all__ = ['host', 'makedirs', 'unlink']
import errno
import os
from application.python.types import Singleton
## System properties and attributes
class HostProperties(object):
"""Host specific properties"""
__metaclass__ = Singleton
def outgoing_ip_for(self, destination):
import socket
try:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect((destination, 1))
return s.getsockname()[0]
except socket.error:
return None
@property
def default_ip(self):
"""
The default IP address of this system. This is the IP address of the
network interface that has the default route assigned to it or in other
words the IP address that will be used when making connections to the
internet.
"""
return self.outgoing_ip_for('1.2.3.4')
@property
def name(self):
import socket
return socket.gethostname()
@property
def fqdn(self):
import socket
return socket.getfqdn()
@property
def domain(self):
import socket
return socket.getfqdn()[len(socket.gethostname())+1:] or None
@property
def aliases(self):
import socket
hostname = socket.gethostname()
aliases = socket.gethostbyaddr(hostname)[1]
if hostname in aliases:
aliases.remove(hostname)
return aliases
host = HostProperties()
## Functions
def makedirs(path, mode=0777):
"""Create a directory recursively and ignore error if it already exists"""
try:
os.makedirs(path, mode)
except OSError, e:
if e.errno==errno.EEXIST and os.path.isdir(path) and os.access(path, os.R_OK | os.W_OK | os.X_OK):
return
raise
def unlink(path):
"""Remove a file ignoring errors"""
try:
os.unlink(path)
except:
pass
|