针对嵌入式系统的telnet登录系统
纯命令写成,可以记录登录时间与用户,二次开发空间大。需busybox与ash的支持。话不多说直接上脚本:
登录脚本(login.sh):
#!/bin/ashcname=$(cat /etc/telnet.cfg | grep username)
cpwd=$(cat /etc/telnet.cfg | grep passwd)
#/etc/telnet.cfg可修改,与createconfig创建的保持一致即可
echo "---------" >> /tmp/telnetLOG
echo "有新登录请求!时间:" >> /tmp/telnetLOG
uptime >> /tmp/telnetLOG
read -p "login: " username
echo "用户:"$username >> /tmp/telnetLOG
if [ "$cname" = "username $username" ]
then
read -p "Password:" passwd
if [ "$cpwd" = "passwd $passwd" ]
then
echo "登录成功!" >> /tmp/telnetLOG
/bin/ash --login
else
echo Error!
#可自定义显示内容
fi
else
echo Error!
fi
更换密码脚本(changepasswd.sh):
#!/bin/ashcname=$(cat /etc/telnet.cfg | grep username)
cpwd=$(cat /etc/telnet.cfg | grep passwd)
echo "Changing telnet passwd..."
read -p "Old Passwd: " tpwd
read -p "New Passwd: " npwd
if [ "passwd $tpwd" = "$cpwd" ]
then
rm /etc/telnet.cfg
touch /etc/telnet.cfg
echo "$cname" >/etc/telnet.cfg
echo "passwd $npwd" >>/etc/telnet.cfg
chown root /etc/telnet.cfg
chmod 000 /etc/telnet.cfg
chmod +r /etc/telnet.cfg
chmod +w /etc/telnet.cfg
#上方四行如为单用户系统(即只有root可登陆)可以删除
else
echo "Error!"
#可定制显示内容
fi
创建配置文件脚本(createconfig.sh):
#!/bin/ashecho "Changing telnet config..."
if [ "$(cat /etc/telnet.cfg 2>/dev/null)"x != "x" ]
then
echo "passwd file already exists"
else
read -p "Username: " uname
read -p "Passwd: " upwd
#文件地址可修改,与其他脚本保持一致
rm /etc/telnet.cfg
echo "username $uname" >/etc/telnet.cfg
echo "passwd $upwd" >>/etc/telnet.cfg
chown root /etc/telnet.cfg
chmod 000 /etc/telnet.cfg
chmod +r /etc/telnet.cfg
chmod +w /etc/telnet.cfg
#同样如为单用户可删除
fi
查看日志脚本(showlog.sh):
#!/bin/ashcat /tmp/telnetLOG
清除日志脚本(clearlog.sh):
#!/bin/ashcpwd=$(cat /etc/telnet.cfg | grep passwd)
read -p "input:" passwd
if [ "passwd $passwd" = "$cpwd" ]
then
rm /tmp/telnetLOG
touch /tmp/telnetLOG
chown root /etc/telnet.cfg
chmod 000 /etc/telnet.cfg
chmod +r /etc/telnet.cfg
chmod +w /etc/telnet.cfg
else
echo Error!
fi
一键安装脚本(install.sh):
#!/bin/ashbusybox=$(which busybox)
#下方代码块如果确定有ln和whoami可删除
for i in ln whoami
do
if [ "$(which $i)"x = "x" ]
then
busybox ln -s $busybox /bin/$i
fi
done
ifroot=$(whoami)
if [ "$ifroot" = "root" ]
then
echo "1.复制所有文件到/bin下..."
#cp /bin/login.sh /bin/logib.sh.bak
rm /bin/login.sh
#如/bin下真的有login.sh请删除上方注释
cp *.sh /bin
echo "2.创建必须文件链接(可能出现报错请忽略)"
#如确信下方软件都存在可直接删除
for file in cp rm ln whoami chmod which grep uptime chown touch
do
if [ "$(which $file)"x = "x" ]
then
ln -s $busybox /bin/$file
fi
done
if [ "$(which telnetd)"x = "x" ]
then
echo "你没有telnetd...正从busybox复制(如果支持)"
ln -s $busybox /bin/telnetd
else
echo "找到telnetd..."
fi
echo "3.给主程序可执行权限"
chmod +x /bin/*.sh
echo "4.配置"
/bin/createconfig.sh
echo "5.启动telnetd"
$(which telnetd) -l /bin/login.sh
echo "如果需要将telnetd加入启动列表请按1,其他键即跳过"
read -p "choise: " rc
if [ "$rc" = "1" ]
then
echo "$(which telnetd) -l /bin/login.sh" > /etc/init.d/telnetd
ln -s /etc/init.d/telnetd /etc/rc.d/S50telnet
#请确保系统使用rc.d而不是rc*.d 如是请自行修改.
else
echo "已跳过……"
fi
echo "安装完成!"
rm /bin/install.sh
else
echo "请使用root用户打开或检查报错信息!"
fi
下载:蓝奏云
以上是 针对嵌入式系统的telnet登录系统 的全部内容, 来源链接: utcz.com/z/520168.html