Login via ssh using publickey and create a new use

2019-08-03 16:11发布

How do I make my python script login to a server thrugh ssh using a private key and then create a user using the given password? I tried this code but I am not able to go further like sending a "sudo adduser username"

and "sudo adduser username groupname"...

import paramiko
k = paramiko.RSAKey.from_private_key_file("/Users/whatever/Downloads/mykey.pem")
c = paramiko.SSHClient()
c.set_missing_host_key_policy(paramiko.AutoAddPolicy())
print "connecting"
c.connect( hostname = "www.acme.com", username = "ubuntu", pkey = k )
print "connected"
commands = [ "sudo adduser myuser" ]
for command in commands:
    print "Executing {}".format( command )
    stdin , stdout, stderr = c.exec_command(command)
    print stdout.read()
    print( "Errors")
    print stderr.read()
c.close()

Please advise me or I would really appreciate if someone could be kind enough to help me with a working example.

Thanks

标签: python ssh
1条回答
可以哭但决不认输i
2楼-- · 2019-08-03 16:45

I've tested your code by running different commands. So, please check if you are able to run simple commands like "sudo uptime". If it works fine, then follow the below instructions.

If you run "sudo adduser myuser", you will be prompted to enter more details as in below output:

sudo adduser myuser
Adding user `myuser' ...
Adding new group `myuser' (1002) ...
Adding new user `myuser' (1002) with group `myuser' ...
The home directory `/home/myuser' already exists.  Not copying from `/etc/skel'.
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for myuser
Enter the new value, or press ENTER for the default
        Full Name []:
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n] y

So, use the command "sudo useradd myuser" instead of "sudo adduser myuser" because "useradd" command will not prompt for any inputs.

查看更多
登录 后发表回答