linux定制root登录显示系统信息
为了每次root用户登陆到时,自动报告当前登录的用户数、打开的进程数、剩余可用内存、剩余交换空间,虽然有nagios监控到服务器的,但我也想每次登录服务器也可以看到这些信息.
系统:centos 5.5
1.编写登录欢迎脚本login.root
使用who、ps、wc命令及管道操作统计登录用户数、进程数,并使用free、awk命令结合管道操作提取剩余可用内存、剩余交换空间信息.
vi login.root
2.赋权限,并加入到root的.bashrc文件中
chmod a+x login.root
vi ~/.bashrc
可以看到我的脚本是放在/root/webbak下的,你可以根据自己的情况来修改.
3.重新登录验证
可以看到有提示信息,到这里还没有完,我们再来试试上传东西,可以看到无法使用sftp了,报下面的错:
File transfer server could not be started or it exited unexpectedly.Exit value 0 was returned. Most likely the sftp-server is not in the path of the user on the server-side.
罪魁祸首就是.bashrc文件.
在bash的联机手册里有一段,说的是关于通过RSHD登录系统时,系统要执行.bashrc文件.而这个文件是在启动一个交互SHELL时才要执行的.而在SSH登录时,系统就要执行.bashrc文件.而SSH登录系统是非交互的.如果执行.bashrc文件时,产生输入与输出就会出在我遇到的这个问题.
解决办法是:
在.bashrc文件中,测试一下是交互SHELL还是非交互的,如果是非交互的,则直接退出即可.
一般在.bashrc文件的最前边加入下面这行就可以了:
[ -z "$PS1" ] && return #我试验了此条,一般用户修改自己家目录下的.bashrc成功!
或者:
[ $- != *i* ] && return
内容如下:
这样才能使用sftp.好了,就到这里.
系统:centos 5.5
1.编写登录欢迎脚本login.root
使用who、ps、wc命令及管道操作统计登录用户数、进程数,并使用free、awk命令结合管道操作提取剩余可用内存、剩余交换空间信息.
vi login.root
#!/bin/bash echo "This is a private server,please leave,thanke you!" echo "Welcome $USER To Login To This Server!" LoginUserNum=`who | wc -l` OpenProcesNum=$(expr $(ps aux | wc -l) - 1) FreeMem=`free -m | grep Mem: | awk '{print $4}'` FreeBuffers=`free -m | grep - | awk '{print $3}'` FreeCache=`free -m | grep - | awk '{print $4}'` FreeSwap=`free -m | grep Swap: | awk '{print $4}'` echo "Number of Login Users:"$LoginUserNum echo "Numbre of Running Processes:"$OpenProcesNum echo "Free Memory Size(MB):"$FreeMem echo "Free Buffers Size(MB):"$FreeBuffers echo "Free Cache(MB):"$FreeCache echo "Free Swap Space Size(MB):"$FreeSwap
2.赋权限,并加入到root的.bashrc文件中
chmod a+x login.root
vi ~/.bashrc
# .bashrc # User specific aliases and functions alias rm='rm -i' alias cp='cp -i' alias mv='mv -i' /root/webbak/login.root # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi
可以看到我的脚本是放在/root/webbak下的,你可以根据自己的情况来修改.
3.重新登录验证
可以看到有提示信息,到这里还没有完,我们再来试试上传东西,可以看到无法使用sftp了,报下面的错:
File transfer server could not be started or it exited unexpectedly.Exit value 0 was returned. Most likely the sftp-server is not in the path of the user on the server-side.
罪魁祸首就是.bashrc文件.
在bash的联机手册里有一段,说的是关于通过RSHD登录系统时,系统要执行.bashrc文件.而这个文件是在启动一个交互SHELL时才要执行的.而在SSH登录时,系统就要执行.bashrc文件.而SSH登录系统是非交互的.如果执行.bashrc文件时,产生输入与输出就会出在我遇到的这个问题.
解决办法是:
在.bashrc文件中,测试一下是交互SHELL还是非交互的,如果是非交互的,则直接退出即可.
一般在.bashrc文件的最前边加入下面这行就可以了:
[ -z "$PS1" ] && return #我试验了此条,一般用户修改自己家目录下的.bashrc成功!
或者:
[ $- != *i* ] && return
内容如下:
# .bashrc # User specific aliases and functions [ -z "$PS1" ] && return alias rm='rm -i' alias cp='cp -i' alias mv='mv -i' /root/webbak/login.root # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi
这样才能使用sftp.好了,就到这里.
评论: