[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Linux\Ubuntu, запустить несколько команд подряд
inpost
Всем привет. Мне надо выполнить несколько команд подряд из консоли плана:
1) создать пользователя
2) Прописать его virtualhost
3) создать таблицу в MySQL


Теперь о самих проблемах и вопросах:
1) Как это можно и лучше всего запрограммировать? Чтобы переменная подставлялась в команды? К примеру обычный пример команды:
mysql -uuser -ppass -e "CREATE DATABASE testbase CHARACTER SET utf8 COLLATE utf8_general_ci" 

Тут необходимо, чтобы подставилась testbase.
2) Как создать пользователя сразу с паролем? :) Предлагают useradd, а потом passwd , но в таком случае надо его ручками заполнять. Пробовал useradd с ключем -p "pass", но почему-то не сработало, в мануале говорится, что это не просто пароль, а зашифрованный. Но как именно не понятно шифровать.

_______________________

Единственное что пришло в голову и я загуглил, так это следующий способ:
1) На PHP сгенерировать список команд. То есть сделать обычную форму на сайте, ввести логин, который автоматом подставится во все команды.
2) Запустить sh 'сгенерированный файл'
3) С passwd, тогда после выполнения всех команд как раз в консоли и спросят о пароле для пользователя.

С Ubuntu я только начинаю знакомиться, поэтому дуб-дубом. Может можно как-то на уровне самой ОС запрограммировать команды? Что-то вроде BASH ? Если да, скиньте мини-пример с переменной и командой, или хотя бы в какую сторону копать.
Как вижу реализацию: запрограммировать, чтобы автоматом подставлялось из переменной {$user}, а команду вызывать
mycommand "username"


_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Oyeme
Подавать аргументы в shell скрипт.

Расширь его чтобы добавить туда cоздание apache virtual hosts.

Вот тебе пример

1.Name it something like mysql-db-create.sh
2.Make it executable $ sudo chmod 755 mysql-db-create.sh



#!/bin/bash

# Functions
ok() { echo -e '\e[32m'$1'\e[m'; } # Green

EXPECTED_ARGS=3
E_BADARGS=65
MYSQL=`which mysql`

Q1="CREATE DATABASE IF NOT EXISTS $1;"
Q2="GRANT ALL ON *.* TO '$2'@'localhost' IDENTIFIED BY '$3';"
Q3="FLUSH PRIVILEGES;"
SQL="${Q1}${Q2}${Q3}"

if [ $# -ne $EXPECTED_ARGS ]
then
echo "Usage: $0 dbname dbuser dbpass"
exit $E_BADARGS
fi

$MYSQL -uroot -p -e "$SQL"

ok "Database $1 and user $2 created with a password $3"


3.Run it sudo ./mysql-db-create.sh dbname dbuser password
johniek_comp
Цитата
Пробовал useradd с ключем -p "pass", но почему-то не сработало, в мануале говорится, что это не просто пароль, а зашифрованный

ты же полюбому делал защиту от входа через htaccess, passwd создает пароль для юзера и пишет его в файл например, пароль зашифрован конечно же, тот же принцип.
тут язык не играет роли, что бы понять как работают команды в той же ubuntu (которую ты написал в теме) попробуй закинь файл inpost (просто inpost, разрешение не обязательно) в папку /usr/bin на сервере, и выполни chmod 777 /usr/bin/inpost
ну а дальше можешь на своем любимом php туда писать
#!/usr/bin/php
<?php

echo "hello, inpost:)";

сохрани, и потом просто набери в консоли inpost, обрадуешься ))
#!/usr/bin/php что бы дать понять чем обрабатывать файл, тут разширения не играют роли.
так как php тебе ближе всего, нету смысла на чем-то другом делать, можешь передать в скрипт аргументы, они будут в $argv, при вызове inpost HelloWorld в $argv[1] будет "HelloWorld", ну и все дальше флаг тебе в руки

_____________
user posted image
inpost
Oyeme
Спасибо за великолепный пример, все бы так отвечали ;)

Пароль создал так с ключем -p:
-p $(openssl passwd -1 $PASS)


johniek_comp
За пример спасибо.
Не совсем понял, ты предлагаешь unix команды запускать через system на PHP ?

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
vital
Цитата
запустить несколько команд подряд

Да хоть все сразу одной строкой command1 && command2 ...commandN.
или конвеером(http://habrahabr.ru/post/195152/) command1 | command2 | commandN

_____________
"Нужно быть готовым прислушиваться к тем, кто может тебя чему-нибудь научить. Иначе ты никогда не вырастешь."

Откровенно я никому ниразу не нагрубил. А дать подзатыльник зарвавшемуся юнцу, так это и ему на пользу, и мне в удовольствие. © AllesKlar
inpost
vital
Я описал выше почему не подходит подряд вызывать функции через &&, нужны динамические данные из переменных. Пример на bash отлично подошел, уже реализовал задуманное.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
paul85
Ну да, самый оптимальный вариант.
johniek_comp
inpost
Можно сделать на bash, php как пример

_____________
user posted image
paul85
Я в свое время на bash накатал back-end для системы управления шейпером. На фронте была обычная web-морда, а за кулисами синхронизацией по cron через MySQL как раз bash скрипт.

Свирепый был, кстати! Где-то до сих пор лежит... Умел заводить фильтры, классы... Бить на группы... Синхронить фактические параметры с БД...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.