{ "info": { "author": "Thomas Touhey", "author_email": "thomas@touhey.fr", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: POSIX", "Programming Language :: Python :: 3", "Topic :: System :: Systems Administration" ], "description": "utmp/wtmp/btmp reader module for Python 3.x\n===========================================\n\nThis project is a binary Python 3.x module using POSIX-compliant and/or\nsystem-specific headers for reading utmp/wtmp/btmp entries. It aims at\nbeing compatible with multiple UNIX-like systems.\n\nThe format of these files have been standardized as ``utmpx``, ``wtmpx`` and\n``btmpx`` in the `Single Unix Specification`_, although their location\ndepends on the system. The systems/paths correspondances are not hardcoded\nin order to be able to interface with this module by reproducing one of\nthe known behaviours without having to fork and add an entry to the code.\n\nUsage\n-----\n\nThe module defines at least the ``utmp`` object, and at most it and two other\ndatabases, which are ``wtmp`` and ``btmp``. The three objects behave the\nsame, so in the rest of the description, I'll only deal with ``utmp``.\n\n``utmp`` is both an iterator and iterable, using itself as the iterator, which\nallows you to use tools such as list comprehensions with it. You can also use\nthe ``.reset()`` and ``.next()`` methods with it.\n\nEvery return entry will be a ``utmp_entry``, which has the following\nproperties:\n\n``type``\n\tThe entry type, among the following:\n\n\t\t``BOOT_TIME``\n\t\t\tTime of system boot.\n\n\t\t``OLD_TIME``\n\t\t\tTime before system clock change.\n\n\t\t``NEW_TIME``\n\t\t\tTime after system clock change.\n\n\t\t``USER_PROCESS``\n\t\t\tNormal process.\n\n\t\t``INIT_PROCESS``\n\t\t\tProcess spawned by init(8).\n\n\t\t``LOGIN_PROCESS``\n\t\t\tSession leader process for user login.\n\n\t\t``DEAD_PROCESS``\n\t\t\tTerminated process.\n\n``id``\n\tThe terminal name suffix, or inittab(5) ID (as a string).\n\n``user``\n\tThe username (as a string).\n\n``line``\n\tThe line on which the user is logged in, usually the device name of the\n\ttty minus the \"/dev/\" part (as a string).\n\n``date``\n\tThe date of the event (as a ``datetime.datetime`` instance).\n\n``pid``\n\tThe process identifier (as an integer).\n\nWhat is left to do\n------------------\n\n- Implement other interfaces, standard and non-standard, as explained in\n the \u201cCompatibility\u201d section in ``utmp.c``.\n- Add the ``wtmp`` and ``btmp`` objects.\n- Add utmp filename getting and setting for these objects.\n- Add a list-like interface, with length and index.\n- Add methods to add an event, such as login or logout events.\n\n.. _Single Unix Specification: http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/utmpx.h.html", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://forge.touhey.fr/pyutmpx.git", "keywords": "utmp,utmpx,btmp,btmpx,wtmp,wtmpx", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "pyutmpx", "package_url": "https://pypi.org/project/pyutmpx/", "platform": "", "project_url": "https://pypi.org/project/pyutmpx/", "project_urls": { "Homepage": "https://forge.touhey.fr/pyutmpx.git" }, "release_url": "https://pypi.org/project/pyutmpx/0.2.2/", "requires_dist": null, "requires_python": "", "summary": "utmp, wtmp and btmp reader module for Python 3.x", "version": "0.2.2" }, "last_serial": 4259729, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "e6108869bb87c9cc542b5f7935ff2e57", "sha256": "43b18e2f361a9b6d2b7395a137e212eda673a3dbb385de21a62b269645486018" }, "downloads": -1, "filename": "pyutmpx-0.1.tar.gz", "has_sig": false, "md5_digest": "e6108869bb87c9cc542b5f7935ff2e57", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5742, "upload_time": "2018-02-07T22:50:24", "url": "https://files.pythonhosted.org/packages/6d/6b/f0b8e2dfb91dec954e6ea4e1560cb2af8df1963a0f983b99699355ee5a18/pyutmpx-0.1.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "9c981ad705028d99432a47d06a4e0b91", "sha256": "1a704ed420cba4f8ccfc9579f551267923e7b6c2d37ff1292f84464760041111" }, "downloads": -1, "filename": "pyutmpx-0.1.1.tar.gz", "has_sig": false, "md5_digest": "9c981ad705028d99432a47d06a4e0b91", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5894, "upload_time": "2018-02-07T22:53:39", "url": "https://files.pythonhosted.org/packages/c1/7a/1ab04cbb43fd32afe22f0cc6f143aaaad299a3f46f4df5723fe1cd80a97d/pyutmpx-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "f53bfb82d1ba611cfb9cebf017862472", "sha256": "de77ac61569cc7505c23e830a5a7ac0dc9e63bd6aae95ed3156ceeb9a13cd64e" }, "downloads": -1, "filename": "pyutmpx-0.1.2.tar.gz", "has_sig": false, "md5_digest": "f53bfb82d1ba611cfb9cebf017862472", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5755, "upload_time": "2018-02-07T22:58:49", "url": "https://files.pythonhosted.org/packages/6d/74/bd995d738a320259cd1745b273d9868b7e4ec281caa6c93b5d54bbfa12c1/pyutmpx-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "4ad4c82f05594c679a636f4eb695b2c7", "sha256": "79c6596a32e957dbc05fe3fd19e243b88000575765aa766c43ed962312159444" }, "downloads": -1, "filename": "pyutmpx-0.1.3.tar.gz", "has_sig": false, "md5_digest": "4ad4c82f05594c679a636f4eb695b2c7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5983, "upload_time": "2018-02-07T23:09:47", "url": "https://files.pythonhosted.org/packages/43/52/97c6d0fd0bd963375a652aefd9fbf31b9db436c8ef2b7d0a996b677dd62c/pyutmpx-0.1.3.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "15c678aa37fda76c4313ea7798d19221", "sha256": "bdec8592262dd03319f48f0612b5df46eadbc0b82635543ce113ab427bbd49d5" }, "downloads": -1, "filename": "pyutmpx-0.2.tar.gz", "has_sig": false, "md5_digest": "15c678aa37fda76c4313ea7798d19221", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6674, "upload_time": "2018-09-11T00:09:41", "url": "https://files.pythonhosted.org/packages/ef/de/ac5e2cf6986d228731813ec06d8cb47db0d0f5fe13eb047dd8bfc74d1a9b/pyutmpx-0.2.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "036504e1ca63a5410d803c967731420d", "sha256": "aea851bcd6816a526699723a2d4ebc44bc6055858b36dbc3791fad6f58d5138c" }, "downloads": -1, "filename": "pyutmpx-0.2.1.tar.gz", "has_sig": false, "md5_digest": "036504e1ca63a5410d803c967731420d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7361, "upload_time": "2018-09-11T01:33:11", "url": "https://files.pythonhosted.org/packages/af/2a/708173f02e1d7c7e5309c695f723a5d377de777f1d8ef18edabfe49ac158/pyutmpx-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "d5f370af197694047b77bb5493cb7e67", "sha256": "33874855edafd0676ad1ee2826cb83f5fa5823677ac793f07126785dd089028b" }, "downloads": -1, "filename": "pyutmpx-0.2.2.tar.gz", "has_sig": false, "md5_digest": "d5f370af197694047b77bb5493cb7e67", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8685, "upload_time": "2018-09-11T01:58:38", "url": "https://files.pythonhosted.org/packages/4c/37/63235f0115c4e19d93ec135006891320752390ce62d38d990ed4b4b52543/pyutmpx-0.2.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d5f370af197694047b77bb5493cb7e67", "sha256": "33874855edafd0676ad1ee2826cb83f5fa5823677ac793f07126785dd089028b" }, "downloads": -1, "filename": "pyutmpx-0.2.2.tar.gz", "has_sig": false, "md5_digest": "d5f370af197694047b77bb5493cb7e67", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8685, "upload_time": "2018-09-11T01:58:38", "url": "https://files.pythonhosted.org/packages/4c/37/63235f0115c4e19d93ec135006891320752390ce62d38d990ed4b4b52543/pyutmpx-0.2.2.tar.gz" } ] }