Это вызвано тем, что XmlSerializer только сериализирует общедоступные поля/свойства. Другие формы сериализации могут сериализировать частные данные, которые составляют потенциальную угрозу безопасности, таким образом, необходимо "подписаться" на использование атрибута.
изучите использование expect
Его можно использовать для автоматизации большинства интерактивных сеансов, хотя я бы не стал использовать пароль root
Ожидание, вероятно, перебор. Поищите на одном из форумов администраторов Debian или Ubuntu - такие вещи, как FAI и др., Уже давно используют предварительную настройку для вопросов debconf. Вы также можете использовать это здесь.
Наконец, вы, вероятно, также можете использовать apt-get или другие внешние интерфейсы.
Спасибо за отзыв о 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
Самый простой способ сделать это - использовать переменную среды 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
Это выдержка из моего сценария настройки для новых серверов. Вы должны быть в состоянии скопировать его слово в слово, кроме пароля.
Вам нужно будет запустить это, используя 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.
<
Часть этого решения я получил от этого парня: http://padwasabimasala.posterous.com/non-interactive-scripted-mysql-install-on-ubu
Что нужно помнить с heredoc — это пробел перед его разрывом закрывающей строкой. Так что не делайте отступ в этой строке. Вот страница о синтаксисе heredoc: http://tldp.org/LDP/abs/html/here-docs.html