Skip to content

Instantly share code, notes, and snippets.

@juancarlospaco
Last active April 6, 2018 19:32
Show Gist options
  • Save juancarlospaco/96980b12db4b20c413d3 to your computer and use it in GitHub Desktop.
Save juancarlospaco/96980b12db4b20c413d3 to your computer and use it in GitHub Desktop.
Debug Encoding and Check for root.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import sys, os
import logging as log
from getpass import getuser
from platform import platform, python_version
def make_root_check_and_encoding_debug():
"""Debug and Log Encodings and Check for root/administrator,return Boolean.
>>> make_root_check_and_encoding_debug()
True
"""
log.info(__doc__)
log.debug("Python {0} on {1}.".format(python_version(), platform()))
log.debug("STDIN Encoding: {0}.".format(sys.stdin.encoding))
log.debug("STDERR Encoding: {0}.".format(sys.stderr.encoding))
log.debug("STDOUT Encoding:{}".format(getattr(sys.stdout, "encoding", "")))
log.debug("Default Encoding: {0}.".format(sys.getdefaultencoding()))
log.debug("FileSystem Encoding: {0}.".format(sys.getfilesystemencoding()))
log.debug("PYTHONIOENCODING Encoding: {0}.".format(
os.environ.get("PYTHONIOENCODING", None)))
os.environ["PYTHONIOENCODING"] = "utf-8"
sys.dont_write_bytecode = True
if not sys.platform.startswith("win"): # root check
if not os.geteuid():
log.critical("Runing as root is not Recommended,NOT Run as root!.")
return False
elif sys.platform.startswith("win"): # administrator check
if getuser().lower().startswith("admin"):
log.critical("Runing as Administrator is not Recommended!.")
return False
return True
if __name__ in '__main__':
log.basicConfig(level=-1) # basic logger
make_root_check_and_encoding_debug()
__import__("doctest").testmod(verbose=True, report=True, exclude_empty=1)
@juancarlospaco
Copy link
Author

juan@z:~$ python3 temp.py 


Python 3.4.0 on Linux-3.13.0-52-generic-x86_64-with-Ubuntu-14.04-trusty.
STDIN Encoding: utf-8.
STDERR Encoding: utf-8.
STDOUT Encoding:utf-8
Default Encoding: utf-8.
FileSystem Encoding: ascii.
PYTHONIOENCODING Encoding: None.

Trying:
    make_root_check_and_encoding_debug()
Expecting:
    True
Python 3.4.0 on Linux-3.13.0-52-generic-x86_64-with-Ubuntu-14.04-trusty.
STDIN Encoding: utf-8.
STDERR Encoding: utf-8.
STDOUT Encoding:utf-8
Default Encoding: utf-8.
FileSystem Encoding: ascii.
PYTHONIOENCODING Encoding: None.
ok
1 items passed all tests:
   1 tests in __main__.make_root_check_and_encoding_debug
1 tests in 1 items.
1 passed and 0 failed.
Test passed.

juan@z:~$ python2 temp.py

Python 2.7.6 on Linux-3.13.0-52-generic-x86_64-with-Ubuntu-14.04-trusty.
STDIN Encoding: utf-8.
STDERR Encoding: utf-8.
STDOUT Encoding:utf-8
Default Encoding: ascii.
FileSystem Encoding: ANSI_X3.4-1968.
PYTHONIOENCODING Encoding: None.

Trying:
    make_root_check_and_encoding_debug()
Expecting:
    True
Python 2.7.6 on Linux-3.13.0-52-generic-x86_64-with-Ubuntu-14.04-trusty.
STDIN Encoding: utf-8.
STDERR Encoding: utf-8.
STDOUT Encoding:utf-8
Default Encoding: ascii.
FileSystem Encoding: ANSI_X3.4-1968.
PYTHONIOENCODING Encoding: None.
ok
1 items passed all tests:
   1 tests in __main__.make_root_check_and_encoding_debug
1 tests in 1 items.
1 passed and 0 failed.
Test passed.

juan@z:~$

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment