Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 添加用户的bash脚本_Python_Bash - Fatal编程技术网

Python 添加用户的bash脚本

Python 添加用户的bash脚本,python,bash,Python,Bash,我编写了连接到Linux服务器的python脚本,并运行了创建用户和密码的bash脚本。 密码没有设置,我也不知道为什么,我认为python中的随机密码不会将值发送到bash脚本,但是如果在bash脚本中我使用密码值创建目录,那么它将创建 python脚本: import boto3 import botocore import paramiko import string import secrets def add_user(username, subfolder): key =

我编写了连接到Linux服务器的python脚本,并运行了创建用户和密码的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

passwd
不是该作业的正确工具,您可以使用
chpasswd
。从
手动密码

chpasswd命令从标准输入读取用户名和密码对的列表,并使用此信息更新一组现有用户。每行的格式为:
user\u name:password

要将其放入脚本中,还要确保移动
sudo
以执行管道的右侧:

echo "${USERNAME}:${PASSWORD}" | sudo chpasswd 

你能试着用sudo运行你的脚本吗?就像sudo python一样,你的_python_file.pyIt不起作用。你能
print(stderr)
查看是否收到错误消息吗?输出:为输出添加用户test33 12asd3 vG8UyQ6Q vG8UyQ6Q>链接:它仍然不起作用,但是我必须说,如果我从Linux上运行bash脚本,它会成功,而当我使用相同的bash脚本运行python脚本时,它的文件也会成功。