Я использую следующее предварительное семя:
d-i preseed/late_command string \
in-target wget http://my.server.adress.com/postinst.sh -O /root/postinst.sh; \
in-target /bin/bash /root/postinst.sh
И в сценарии, в конце его, я делаю:
/usr/bin/expect << EOF
set timeout 10
spawn realm join --user=usertojoinad mydomain.com
expect "Password for usertojoinad:"
send "TheJoinAdPassword\r";
expect eof
EOF
Все другие команды в postinst.sh выполняются правильно, но для этой команды я добираюсь:
realm: Couldn't connect to system bus: Could no connect: No such file or directory". Sadly it does not say which file
Эта точно та же самая команда работает, если я ввожу ее в терминале в недавно установленном рабочем столе после того, как я вхожу в систему и sudo su -
.
ppf на #ubuntu в freenode предположил, что у пользователя нет сессии, поэтому dbus не доступен. Он предложил попробовать: export XDG_RUNTIME_DIR="/run/user/$UID" DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus"
. Все же это не решает проблему.
Какая-либо подсказка на этом?
Править: Я пытался sudo su -l -c
но это, кажется, не решает эту проблему. При выполнении sudo su -l
Я добираюсь: pan_systemd(su:session): Failed to connect to system bus: No such file or directory
Я мог сделать то, что я хочу путем создания сервиса, которые приходят последними. Это - вероятно, не лучший способ сделать это, таким образом, я все еще хотел бы решить эту проблему. Тем временем вот то, как я сделал это:
в postinst.sh:
pam-auth-update --package --enable mkhomedir
wget --quiet http://my.server.adress.com/join_ad.sh -O /root/join_ad.sh
wget --quiet http://my.server.adress.com/firstbootsetup.sh -O /root/firstbootsetup.sh
chmod 760 /root/join_ad.sh
chmod 760 /root/firstbootsetup.sh
touch /root/firstboot.flag
wget --quiet http://my.server.adress.com/firstbootsetup.service.rename.txt -O /etc/systemd/system/firstbootsetup.service
systemctl enable firstbootsetup.service
в firstbootsetup.service.rename.txt:
[Unit]
Description=FirstBootSetup
ConditionPathExists=/root/firstboot.flag
[Service]
Type=idle
RemainAfterExit=yes
ExecStart=/root/firstbootsetup.sh
ExecStartPost=/bin/rm -f /root/firstboot.flag
[Install]
WantedBy=multi-user.target
в firstbootsetup.sh:
#!/bin/bash
/root/join_ad.sh
rm -f /root/join_ad.sh
в join_ad.sh:
#!/bin/bash
realm discover mydomain.com
/usr/bin/expect << EOF
set timeout 10
spawn realm join --user=usertojoinad mydomain.com
expect "Password for usertojoinad:"
send "TheJoinAdPassword\r";
expect eof
EOF
Примечание: Я запустил с этого сообщения https://serverfault.com/questions/853396/run-script-on-first-boot
используйте опцию - устанавливают =/в сценарии 4ex:
#!/bin/bash
realm discover mydomain.com
/usr/bin/expect << EOF
set timeout 10
spawn realm join --install=/ --user=usertojoinad mydomain.com
expect "Password for usertojoinad:"
send "TheJoinAdPassword\r";
expect eof
EOF