In [1]:
import os
import getpass
from passlib.hash import pbkdf2_sha256
import crypt, getpass, spwd
from Crypto.PublicKey import RSA

In [2]:
fuliz = os.listdir('/home')

In [3]:
fuliz


Out[3]:
['tnow',
 'sjohns',
 'signinlca.py',
 'charle',
 'wcm',
 'wmen',
 'webmck',
 'pjohns',
 'red',
 'wez',
 'checkthis',
 'blah',
 'joeman',
 'wkee',
 'jchick',
 'wcmckee',
 'wblack',
 'joemanz',
 'poiu',
 'poi',
 'qwe',
 'point',
 'cvb',
 'pytest',
 'figlet',
 'blag',
 'gerty',
 'jblog',
 'ssung',
 'clittle',
 'joecheck']

In [4]:
#Chabge password for user
#pasuz = raw_input('User to change password: ')

In [5]:
#logtest = getpass.getpass('new password: ')

#loghash = pbkdf2_sha256.encrypt(logtest, rounds=200000, salt_size=16)
#vercryp = pbkdf2_sha256.verify(logtest, hashez)

In [6]:
#Enter user to delete.
#Even better, user to lock.

#delusa = raw_input('User to delete: ')
#locusa = raw_input('User to lock: ')
#os.system('sudo passwd -l ' + locusa)

In [7]:
#Read hashed passwords from /etc/shadow
#opshad = open('/etc/shadow', 'r')
#opshad.read()
#opshad.close()
#Better to do this with a python module. spwd reads
#shadow files done.
#Need to getpass and ask for password, comparing to 
#the password returned from spwd

In [9]:
pan = raw_input("Enter Username to delete: ")


Enter Username to delete: qwe

In [10]:
#enc_pwd = spwd.getspnam(pan)[1]
#if enc_pwd in ["NP", "!", "", None]:
#    print "user '%s' has no password set" % pan
#if enc_pwd in ["LK", "*"]:
#    print "account is locked"
#if enc_pwd == "!!":
#    print "password has expired"

In [11]:
gpas = getpass.getpass('Enter Username Password: ')


Enter Username Password: ········

In [12]:
encpass = spwd.getspnam(pan)[1]


---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-12-9aef7c527eb2> in <module>()
----> 1 encpass = spwd.getspnam(pan)[1]

KeyError: 'getspnam(): name not found'

In [13]:
if crypt.crypt(gpas, encpass) == encpass:
    print ('True')
else:
    print "incorrect password"


---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-13-4efe7353fce3> in <module>()
----> 1 if crypt.crypt(gpas, encpass) == encpass:
      2     print ('True')
      3 else:
      4     print "incorrect password"

NameError: name 'encpass' is not defined

In [14]:
#print spwd.getspnam(pan)[1]

In [15]:
#shpa = spwd.getspnam('wcmckee')[1]

In [16]:
#spwd.getspall()

In [17]:
#shpa

rsa key generated for each user and stored in their /home/user/.ssh/ folder. Public key is emailed, added to test servers.


In [18]:
new_key = RSA.generate(2048, e=65537)
public_key = new_key.publickey().exportKey("PEM")
private_key = new_key.exportKey("PEM")
print private_key 
sapriv = open('/home/wcmckee/.ssh/' + pan, 'w')
sapriv.write(private_key)
sapriv.close()

print public_key 
papriv = open('/home/wcmckee/.ssh/' + pan + '.pub', 'w')
papriv.write(public_key)
papriv.close()


-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEAh0qVaJVpVOkwIABsctxolCLatamFAIAxYc7MqIo1LFyTF9Lt
uGdy8e0dZWnmW+FdmyZWrX00Ya4viZMoNCTh5RRiIFij5g32B58eLM6kFHJeEd6T
Q7Rc01q92H4LPzJI1PP/Bx1eWIyNeNC7k0OhpyhNZ5WGUVYga1AZao0J8qwzlu/B
p0u3LweKrJOmdXFFzOnAvLeT8xECvjct+uqSsKhbyuhTQnK2a2PPVYGtJpIZXDxB
bes21hd/Bg99MAP9hEsdH39Z1q/mZ/zqQxQf66pvwKN0Gkt2qE4QqP8MgH2LvTVB
6VHeXffl+HRKNwSnVUqzAZvZ3ii6pmB4Tu81tQIDAQABAoIBAEaZRgQwS6nykZlx
fyYlHDGJSqYXkv8i5iIK/0NH8911ZZC+EizzVskmGfvs2jfCD83BoOOhfW8nrUjW
UNl9EaAwFdCZUNXhHSz2/JEXOAovcCVVB3YCLZphNMY/Z/EPdXAi70cwLSZ6Ge0c
x3VeioGnB1VxcokJL5uwTcMLXFCUh5Awv+2mD6cd3Ppk2UuEb/9+Q7NtLaG4F44O
6i+GztVPaQclxXReFrSL7FXluql6MtdqKmt5QKLX4XRs4/PINbLigQ/j3ZfS3nsw
TQc+IEmrU87zm/GRgRGoZKaLs6tRiAnoi7HvAgHyULxmYHf66ZbYvLM87actNDUF
W5RBL2ECgYEAuhY4TRyuTFsQcGfsnEZbyXCIdtk8JRHOvDkluHxaHhD8JlE4Ork3
frkNmUbNFmCNq4qFnXjkuK6wXkqw/pU9BpF6xl7zxwSlioNjaxVqNi1JaUFKhAFi
1fpclHaI7nMPX1YnyrPTizYTZiLADFj3LQcFMhzFxqC10/G3mIKnGhkCgYEAuh7e
uUswg7lIX4AkUEioH/Of5Y+6COWaREINuMlgGndeT6u3M+FCBXxn4rL74Kt3iFvJ
Br1jKecc1qrHSFn3NpU2XjRwE0aSo7WZYgSU47gjjru3NG6XzvBzCyhUq412aZQ9
ISLN3BkEKnLdBjG/C//wk0Vu5PxY/4a5SwohI/0CgYAu5VKi/EtgqsJl0Yrrhz+y
cE2zxeNGZEp5XN2ItK3xTc59yZImGm9F3FT0/8bHkOWjCXHK0aCyejOwT5pzTiDm
+tq6C0vcJ+ugEKSJZAg0Rw1tHSsuQTsrOcEDGSxBC3YgTJISn2b8elBBORi1A+am
zlIc4utktzObihr+sE50YQKBgEPHHiCoKwCtJpfwmEjMTL1mAOKeVocK5gTZcRnL
6713ntawl8TC0UIiLcq2l1cX2i3EDw7vRP9rdGsQQgYtDQPJjsT7n5zFZH1Nko/J
T1cmJXzDC1KCu7HWim6Tv1HB8E8+doxsmj7+tS+oKKkq0IHUMI3RCTNGWjqjmzKi
e7MZAoGATKkH+MHC4BncM4yp9GF4YXNi3NNIvX0emsS6wbn/GK9F62cDFKpiY76c
LgI0gTYh3vpePEFFOIItRekGU8jtOfUtU4hDr3Rvhi0hYH8ivgzo9KqaJLLO9Dwf
u+ji9GCQDbERR0yD2/TibTUyZE3ipZ2vXwPwAFlfs4RcTcySTck=
-----END RSA PRIVATE KEY-----
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAh0qVaJVpVOkwIABsctxo
lCLatamFAIAxYc7MqIo1LFyTF9LtuGdy8e0dZWnmW+FdmyZWrX00Ya4viZMoNCTh
5RRiIFij5g32B58eLM6kFHJeEd6TQ7Rc01q92H4LPzJI1PP/Bx1eWIyNeNC7k0Oh
pyhNZ5WGUVYga1AZao0J8qwzlu/Bp0u3LweKrJOmdXFFzOnAvLeT8xECvjct+uqS
sKhbyuhTQnK2a2PPVYGtJpIZXDxBbes21hd/Bg99MAP9hEsdH39Z1q/mZ/zqQxQf
66pvwKN0Gkt2qE4QqP8MgH2LvTVB6VHeXffl+HRKNwSnVUqzAZvZ3ii6pmB4Tu81
tQIDAQAB
-----END PUBLIC KEY-----

In [19]:
#Spin up digital ocean server, with public key and 
#user created.

In [20]:
#import digitalocean

In [21]:
#tok  = ('c54ea484dcf55053743215cdb37309cb77a153e9810f35851b4701d4c8bf2881')

In [22]:
#digid = digitalocean.Manager(token='c54ea484dcf55053743215cdb37309cb77a153e9810f35851b4701d4c8bf2881')

In [23]:
#digid.get_account

In [24]:
#my_droplets = digid.get_all_droplets()

In [25]:
#lisdrop = []

In [26]:
#for myd in my_droplets:
#    print myd
    #lisdrop.append(myd.image)
    #
#    lisdrop.append(myd.ip_address)

In [27]:
#lisdrop

In [27]:


In [28]:
#droplet = digitalocean.Droplet(token=tok,
#                               name='Example',
#                               region='nyc2', # New York 2
##                               image= , # Ubuntu 14.04 x64
 #                              size_slug='512mb',  # 512MB
#                              backups=True)

In [29]:
#droplet.create()

In [30]:
#dimg = digid.get_all_images()

In [31]:
#for di in dimg:
##    print di

In [32]:
#opdel = os.listdir('/home/wcmckee/signinlca/deleteusers')

In [33]:
#opdel

In [ ]:
usrtodel = raw_input('Account to delete: ')

In [ ]:
locacc = os.system('sudo passwd -l ' + usrtodel)

In [ ]:
locacc

In [ ]:
os.system('mv ' + '  ' + '/home/wcmckee/signinlca/usernames/' + usrtodel + ' /home/wcmckee/signinlca/username/deleteusers/')