Предупреждение : оставлять UN-зашифрованный пароль внутри скрипта - очень плохая идея. Если вы все же решите это сделать, по крайней мере, измените права доступа к файлу на 600 от root. Это защитит его от простых атак.
Затем:
Первая проблема, которую я вижу, заключается в том, что вы дважды вызываете adduser
в части else.
Это вызовет первое выполнение, которое задаст все вопросы.
Второй вызов работает нормально.
Кроме того, существует много общих опций между частями then и else, сценарий можно записать так:
#!/bin/bash
$PassWord="somepassword"
UserName="default"
if id -u "$UserName" >/dev/null 2>&1; then
userdel -r -f "$UserName"
fi
adduser --disabled-password --gecos "" "$UserName"
userdir=/home/"$UserName"
[[ -d $userdir ]] || mkdir "$userdir" # only needed for system users.
# which usually do not have a password.
usermod -a -G sudo "$UserName"
echo "$UserName:$PassWord" | chpasswd
Мне удалось найти кое-кого, кто мог бы помочь мне с этой проблемой. Вот правила, которые мы использовали для сопоставления портов с исходящими IP-адресами в AWS:
Во-первых, вам нужно, чтобы это работало через экземпляр NAT, чтобы заставить его работать. Есть много ресурсов о том, как это настроить.
iptables -t mangle -A PREROUTING -p tcp --dport 27 -j MARK --set-mark 27
iptables -t nat -A PREROUTING -p tcp --dport 27 -j DNAT --to :25
iptables -t nat -A POSTROUTING -m mark --mark 27 -j SNAT --to-source 10.0.0.11