Catalog PyPI
PACKAGE EXPLORERView in registry

agamotto

PyPI

Agamotto is a module that provides helper functions for testing the configuration of a running server

servertesting
Versions collected1
Direct dependencies0From release 0.5.1
Last observed20 Oct, 21:18 UTC

README

Version 0.5.1 documentation
Agamotto
========

Agamotto is a helper module to make it easier to test a running system
with Python.

Why not use serverspec? I work in a Python shop and want our devs to be
able to easily write their own tests. Making the test suite use the same
language they use daily removes a potential friction point.

Installation
============

.. code:: bash

    pip install agamotto

Usage
=====

.. code:: python


    import agamotto
    import unittest2 as unittest

    class TestKnownSecurityIssues(unittest.TestCase):

      def testBashHasCVE_2014_6271Fix(self):
        """Confirm that fix has been installed for CVE-2014-6271 Bash Code
        Injection Vulnerability via Specially Crafted Environment Variables
        """
        self.assertFalse(agamotto.process.stdoutContains("(env x='() { :;}; echo vulnerable'  bash -c \"echo this is a test\") 2>&1",
                         'vulnerable'), 'Bash is vulnerable to CVE-2014-6271')


      def testBashHasCVE_2014_7169Fix(self):
        """Confirm that fix has been installed for CVE-2014-7169 Bash Code
        Injection Vulnerability via Specially Crafted Environment Variables
        """
        self.assertFalse(agamotto.process.stdoutContains("env X='() { (a)=>\' bash -c \"echo echo vuln\"; [[ \"$(cat echo)\" == \"vuln\" ]] && echo \"still vulnerable :(\" 2>&1",
                         'still vulnerable'), 'Bash is vulnerable to CVE-2014-7169')


      def testNoAccountsHaveEmptyPasswords(self):
        """/etc/shadow has : separated fields. Check the password field ($2) and
           make sure no accounts have a blank password.
        """
        self.assertEquals(agamotto.process.execute(
          'sudo awk -F: \'($2 == "") {print}\' /etc/shadow | wc -l').strip(), '0',
          "found accounts with blank password")


      def testRootIsTheOnlyUidZeroAccount(self):
        """/etc/passwd stores the UID in field 3. Make sure only one account entry
        has uid 0.
        """
        self.assertEquals(agamotto.process.execute(
                          'awk -F: \'($3 == "0") {print}\' /etc/passwd').strip(),
                          'root:x:0:0:root:/root:/bin/bash')



    if __name__ == '__main__':
      unittest.main()

Then run py.test.

Caveats
=======

We're a CentOS shop. This hasn't even been tested on stock RHEL, let
alone Debian or Ubuntu. Pull requests adding that functionality are
welcome, of course.

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Versions 1

Collected releases
VersionPublishedDirect dependenciesOpen version
0.5.116 Oct 20140

Package advisories

0
No matching advisories collected

This describes our collected data; it is not a security assessment.

Repository

PENDING
groksolutions/agamotto

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 21:18 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package:ef16eef8b1392ef5ebd8fe2aa62389199e60bc2b4237d582908d8e062fa0e858