AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-665556

Yantes's questions

Martin Hope
Yantes
Asked: 2018-12-01 05:54:09 +0800 CST

在新服务器上创建用户的脚本

  • 1

所以我在这种情况下,我们已经开始添加一堆新服务器,因为我们正在获得新客户端,因此,我们需要为我们获得的每个新客户端新服务器,然后需要在这些服务器上创建具有特权的用户和所有这些东西。所以我在每台新服务器上基本上需要做的是以下步骤:

  1. sudo adduser John
  2. sudo usermod -aG sudo John
  3. sudo su John
  4. cd /home/John
  5. mkdir .ssh
  6. chmod 700 .ssh/
  7. touch .ssh/authorized_keys
  8. chmod 600 .ssh/authorized_keys

当您必须在每台服务器上创建 4-5 个用户时,这是非常乏味的。我现在正在做的是创建一个脚本,用一个简单的命令为我完成所有这些步骤

./create_users.sh John Jim Jill Peter

所以我到目前为止是:

for i in "$@"; do
    echo creating user: "$i"
    sudo adduser $i

    echo add user to sudo group
    sudo usermod -aG sudo $i

    echo creating ssh folder and authorized_keys
    sudo su $i
    cd /home/$i
    mkdir .ssh
    chmod 700 .ssh/
    touch .ssh/authorized_keys
    chmod 600 .ssh/authorized_keys
done

我还没有尝试过,但我知道它不会起作用,因为我必须为每个用户传递密码。所以我的问题是我该怎么做?目前,只需设置某种标准密码1Password就可以了,因为他们无论如何都需要更改密码。

甚至可以用脚本来做和/或不建议这样做。

编辑 1

啊,好吧,如果我运行它,实际上会提示我为每个用户设置密码,似乎工作“非常好”现在我唯一遇到的问题是我到达了我cd /home/$i似乎无法正常工作的步骤我收到以下错误:

mkdir: cannot create directory ‘.ssh’: Permission denied 
chmod: cannot access '.ssh/': No such file or directory
touch: cannot touch '.ssh/authorized_keys': No such file or directory
chmod: cannot access '.ssh/authorized_keys': No such file or directory

这是有道理的,因为我不在正确的目录中。所以我不明白为什么我cd /home/$i的不工作......?

scripts adduser sh
  • 1 个回答
  • 1557 Views
Martin Hope
Yantes
Asked: 2017-03-15 23:35:56 +0800 CST

在 Ubuntu 16.04 中为 java jsvc 应用程序创建服务

  • 2

如何为我的 java 应用程序创建一个服务,我必须使用 apache commons daemon jsvc 运行它。该服务应在系统引导时启动。我已经搜索和搜索,阅读和阅读并尝试了很多东西,但似乎没有任何效果。

我在/etc/init.d/路径中创建了一个 .sh 脚本并运行“web”建议的所有必要命令,例如chmod 755 mydaemon.shand or chmod +x mydaemon.sh,在没有 的情况下输入时不起作用.sh,所以我不知道为什么人们会这样建议。但看起来这可能是 v.15 之前的旧方法。好吧,至少我发现有些人说它已被弃用,而 systemd 是新的黑色。

我还尝试创建一个 mydamon.service 文件,/etc/systemd/system将 ExecStart 和 Stop 指向我的 .sh 脚本。我已经完成了所有systemctl daemon-realod-> systemctl start myservice。这是我的.service文件的示例

[Unit]
Description=Scheduler Test

[Service]
ExecStart=/etc/init.d/myscheduler.sh start
ExecStop=/etc/init.d/myscheduler.sh stop

[Install]
WantedBy=multi-user.target

这是我的.sh脚本的一个例子

#!/bin/sh

### BEGIN INIT INFO
#
# Provides: myscheduler
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start the myscheduler service
# Description: This file is used to start the daemon and should be placed in /etc/init.d
### END INIT INFO

NAME="myscheduler"
DESC="MyScheduler service"
EXEC=/usr/bin/jsvc
FILE_PATH="/usr/local/$NAME"
#JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
CLASS_PATH="$FILE_PATH/lib/commons-daemon-1.0.15.jar":"$FILE_PATH/myscheduler.jar"
CLASS="com.example.ApiApplication"
USER="root"
PID=$FILE_PATH/example.pid
LOG_OUT=$FILE_PATH/example.out
LOG_ERR=$FILE_PATH/example.err

jsvc_exec()
{
        cd $FILE_PATH
        $EXEC -home $JAVA_HOME -cp $CLASS_PATH -user $USER -outfile $LOG_OUT -errfile $LOG_ERR -pidfile $PID $1 $CLASS
}

case "$1" in
        start)
                echo "Starting the $DESC..."
                jsvc_exec
                echo "The $DESC has started."
                  ;;
        stop)
                echo "Stopping the $DESC..."
                jsvc_exec "-stop"
                echo "The $DESC has stopped."
                  ;;
        restart)
                if [ -f "$PID" ]; then
                        echo "Restarting the $DESC..."
                        jsvc_exec "-stop"
                        jsvc_exec
                        echo "The $DESC has restarted."
                else
                        echo "Service $DESC not running, no action taken."
                        exit 1
                fi
                        ;;
        *)
                echo "usage: daemon {start|stop|restart}" >&2
                exit 3
                ;;
esac

但是当我尝试启动它时没有任何反应,目前它立即启动和停止。看起来我的应用程序无法读取我在文件中指向的属性文件之一/etc/environment:

quartzconfig="/usr/local/myscheduler/quartz.properties"

我的应用程序的主要类如下所示:

public class ApiApplication implements Daemon{

    private static Scheduler scheduler;

    public static void main(String[] args) {
        try {
            String path = System.getenv("quartzconfig");
            System.out.println(path);
            Properties props = new Properties();

            Parameters parameters = new Parameters();
            FileBasedConfigurationBuilder<FileBasedConfiguration> builder = new FileBasedConfigurationBuilder<FileBasedConfiguration>(PropertiesConfiguration.class)
                    .configure(parameters.properties().setFileName(path));

            Configuration config = builder.getConfiguration();
            props = ConfigurationConverter.getProperties(config);

            SchedulerFactory sf = new StdSchedulerFactory(props);
            scheduler = sf.getScheduler();

            scheduler.start();
        } catch (SchedulerException se){
            se.printStackTrace();
        } catch(ConfigurationException ioe){
            ioe.printStackTrace();
            System.err.println("Could not load properties... something went wrong!");
        }
    }

    @Override
    public void init(DaemonContext daemonContext) throws DaemonInitException, Exception {
        System.out.println("initializing...");
    }

    @Override
    public void start() throws Exception {
        System.out.println("starting...");
        main(null);
    }

    @Override
    public void stop() throws Exception {
        System.out.println("stopping...");
        // if process is stopped gracefully shutdown the scheduler
        scheduler.shutdown();
    }

    @Override
    public void destroy() {
        System.out.println("done.");
    }
}

正如我从日志中看到的那样,它path是空的。

但更奇怪的是,如果我将我的例如放在 ex 中,我可以启动我的“jsvc”应用程序myscheduler.sh。/home/john/Downloads/test并手动启动它,sh myscheduler.sh start然后它工作正常,但似乎无法使其作为服务和系统启动工作update-rc.d ...。

我是 linux 新手,或者至少没有那么丰富的经验,我认为这可能是一些文件夹权限访问,我很想给它一个全部chmod -R 777但我很清楚后果以及它可以做什么我的系统,在xD之前尝试过一次或两次。在 VirtualBox 上运行 Ubuntu 16.04,所以如果它坏了我只创建一个新图像。

16.04
  • 1 个回答
  • 2698 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve