Как передать имя пользователя и пароль в сценарии оболочки, используя Java

1

У меня есть сценарий оболочки. Теперь я хочу передать NAME и PASS в этом скрипте с помощью java. Затем я хочу выполнить его с помощью java. Ниже я написал здесь свой сценарий shell а также код Java.

Пожалуйста, помогите мне.

#!/bin/bash

# Create ftp user, create folders and set permissions
# Usage: ./create_ftp_user.sh [username] "[password]"
#

NAME=bimal
PASS=bimal

echo "USAGE: create_ftp_user.sh [username] [password]"

# check input parameters
if [ -z "$NAME" ]; then
    echo "Error: username is not set"
    exit
fi

if [ -z "$PASS" ]; then
    echo "Error: password not set"
    exit
fi

# create system user
echo "Creating user: $NAME"
echo "With password: $PASS"

useradd -p 'openssl passwd -1 $PASS' -m $NAME -g ftpaccess -s /usr/sbin/nologin

# save to users log
echo "user: $NAME, pass: $PASS" >> new_ftp_users_list

# add user to ftp daemon list
echo "$NAME" >> /etc/vsftpd/chroot_list

# create user ftp dir
mkdir /var/ftpupload/$NAME

# Set Ownership
chown $NAME: /var/ftpupload/$NAME

# Set permissions
chmod 0777 /var/ftpupload/$NAME

# restart vsftp daemon
#/etc/init.d/vsftpd restart
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package testscript;

/**
 *
 * @author deepak
 */
import java.io.IOException;
import org.apache.commons.exec.CommandLine;
import org.apache.commons.exec.DefaultExecutor;
import org.apache.commons.exec.ExecuteException;

public class TestScript {
    int iExitValue;
    String sCommandString;

    public void runScript(String command){
        sCommandString = command;
        CommandLine oCmdLine = CommandLine.parse(sCommandString);
        DefaultExecutor oDefaultExecutor = new DefaultExecutor();
        oDefaultExecutor.setExitValue(0);
        try {
            iExitValue = oDefaultExecutor.execute(oCmdLine);
        } catch (ExecuteException e) {
            // TODO Auto-generated catch block
            System.err.println("Execution failed.");
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            System.err.println("permission denied.");
            e.printStackTrace();
        }
    }

    public static void main(String args[]){
        TestScript testScript = new TestScript();
        testScript.runScript("gksudo sh /home/deepak/Desktop/ftpusers.sh");
    }
}
  • 0
    Вопрос в том, как передать имя пользователя и пароль в качестве аргументов скрипту оболочки из скрипта Java, который его вызывает?
  • 0
    @ Этан Рейснер, да ..
Показать ещё 2 комментария
Теги:

1 ответ

2
Лучший ответ

CommandLine можно использовать для установки аргументов оболочки:

CommandLine oCmdLine = new CommandLine(sCommandString);
oCmdLine.addArgument("bimal");
oCmdLine.addArgument("bimalPassword");

Вы можете ссылаться на различные параметры на странице документации Apache CommandLine.

После этого аргументы будут доступны в сценарии оболочки как параметры позиционной оболочки $ 1 и $ 2:

NAME=$1
PASS=$2
  • 0
    Я не понимал.
  • 0
    @EtanReisner Готово :-).
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню