bash скрипт, который добавляет пользователя - PullRequest
1 голос
/ 13 февраля 2020

Я пишу python скрипт, который подключен к Linux серверу, и запускаю bash скрипт, который создает пользователя и пароль. Пароль не установлен, и я не знаю почему, я подумал, что случайный пароль из python не отправляет значение в сценарий bash, но если в сценарии bash я создаю каталог со значением пароля, его создать!

python скрипт:

import boto3
import botocore
import paramiko
import string
import secrets

def add_user(username, subfolder):
    key = paramiko.RSAKey.from_private_key_file("x.x.x")
    client = paramiko.SSHClient()
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    alphabet = string.ascii_letters + string.digits
    password = ''.join(secrets.choice(alphabet) for i in range(8))
    cmd = "add_user %s %s %s" % (username, subfolder, password)

    # Connect/ssh to an instance
    try:
        # Here 'test' is user name and 'instance_ip' is public IP of EC2
        client.connect(hostname="x.x.x.x", username="test", pkey=key)
        # Execute a command(cmd) after connecting/ssh to an instance
        #stdin, stdout, stderr = client.exec_command(f"add_user {username} {subfolder} {password}")
        stdin, stdout, stderr = client.exec_command(cmd)
        print (cmd)
        print (password)

        client.close()
    except:
        print ("Something wrong")

add_user('test29', '12asd3')

Bash скрипт:

#!/bin/bash

    USERNAME=$1
    SUBFOLDER=$2
    PASSWORD=$3
    sudo useradd -d /home/FTPserver/$USERNAME/ -m $USERNAME
    sudo mkdir -p /home/FTPserver/$USERNAME/$SUBFOLDER
    sudo chown -R $USERNAME:$USERNAME /home/FTPserver/$USERNAME/$SUBFOLDER
    sudo echo -e "${PASSWORD}\n${PASSWORD}" | passwd $USERNAME
    sudo echo $PASSWORD

1 Ответ

1 голос
/ 13 февраля 2020

passwd не подходит для работы, вместо него можно использовать chpasswd. От man chpasswd:

Команда chpasswd считывает список пар имени пользователя и пароля из стандартного ввода и использует эту информацию для обновления группы существующих пользователей. Каждая строка имеет формат: user_name:password

Чтобы вставить его в свой сценарий, также обязательно переместите sudo для выполнения правой стороны канала:

echo "${USERNAME}:${PASSWORD}" | sudo chpasswd 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...