Как я могу передать пароль от сценария удара до способности для установки mysql?

Это вызвано тем, что XmlSerializer только сериализирует общедоступные поля/свойства. Другие формы сериализации могут сериализировать частные данные, которые составляют потенциальную угрозу безопасности, таким образом, необходимо "подписаться" на использование атрибута.

22
задан Paŭlo Ebermann 29 August 2011 в 23:45
поделиться

5 ответов

изучите использование expect

Его можно использовать для автоматизации большинства интерактивных сеансов, хотя я бы не стал использовать пароль root

2
ответ дан 29 November 2019 в 04:36
поделиться

Ожидание, вероятно, перебор. Поищите на одном из форумов администраторов Debian или Ubuntu - такие вещи, как FAI и др., Уже давно используют предварительную настройку для вопросов debconf. Вы также можете использовать это здесь.

Наконец, вы, вероятно, также можете использовать apt-get или другие внешние интерфейсы.

1
ответ дан 29 November 2019 в 04:36
поделиться

Спасибо за отзыв о expect. Я не мог ничего найти, просматривая форумы администраторов Ubuntu, поэтому я ожидал. Как вы можете видеть по метке времени этого сообщения, мне потребовалось 3 часа, чтобы заставить его работать. Вот код, надеюсь, он кому-то поможет:

#!/bin/bash
apt-get update
apt-get install expect

VAR=$(expect -c '
spawn apt-get -y install mysql-server
expect "New password for the MySQL \"root\" user:"
send "PasswordHere\r"
expect "Repeat password for the MySQL \"root\" user:"
send "PasswordHere\r"
expect eof
')

echo "$VAR"

apt-get -y install mysql-client libmysqlclient15-dev   

#For some reason important to restart - otherwise possible errors

/etc/init.d/mysql stop
/etc/init.d/mysql start
12
ответ дан 29 November 2019 в 04:36
поделиться

Самый простой способ сделать это - использовать переменную среды DEBIAN_FRONTEND и флаги aptitude -q и -y:

sudo DEBIAN_FRONTEND=noninteractive aptitude install -q -y mysql-server

Или в более общем смысле, если пароль sudo обслуживается для как-то:

#!/bin/bash
INSTALLER_LOG=/var/log/my-installer.log

installnoninteractive(){
  sudo bash -c "DEBIAN_FRONTEND=noninteractive aptitude install -q -y $* >> $INSTALLER_LOG"
}

installnoninteractive mysql-server
4
ответ дан 29 November 2019 в 04:36
поделиться

Это выдержка из моего сценария настройки для новых серверов. Вы должны быть в состоянии скопировать его слово в слово, кроме пароля.

Вам нужно будет запустить это, используя sudo, если вы еще не root.

#!/bin/bash
export DEBIAN_FRONTEND=noninteractive
apt-get -q -y install mysql-server
echo "Give mysql server time to start up before we try to set a password..."
sleep 5
mysql -uroot -e <<EOSQL "UPDATE mysql.user SET Password=PASSWORD('yourpasswordhere') WHERE User='root'; FLUSH PRIVILEGES;"
EOSQL
echo "Done setting mysql password."

В других ответах использовалась опция -y, из-за которой apt-get всегда отвечает утвердительно на вопросы. Параметр -q скрывает некоторые индикаторы выполнения, чтобы вы могли отправить вывод в журнал. Вы также можете использовать -qq, что автоматически даст вам -y. Это находится на справочной странице для apt-get.

< представляет собой синтаксис bash heredoc для удобочитаемости.

Часть этого решения я получил от этого парня: http://padwasabimasala.posterous.com/non-interactive-scripted-mysql-install-on-ubu

Что нужно помнить с heredoc — это пробел перед его разрывом закрывающей строкой. Так что не делайте отступ в этой строке. Вот страница о синтаксисе heredoc: http://tldp.org/LDP/abs/html/here-docs.html

7
ответ дан 29 November 2019 в 04:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: