linux定制root登录显示系统信息

post by rocdk890 / 2013-2-20 16:41 Wednesday linux技术
  为了每次root用户登陆到时,自动报告当前登录的用户数、打开的进程数、剩余可用内存、剩余交换空间,虽然有nagios监控到服务器的,但我也想每次登录服务器也可以看到这些信息.
   系统: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.好了,就到这里.
夜空- 本站版权
1、本站所有主题由该文章作者发表,该文章作者与夜空享有文章相关版权
2、其他单位或个人使用、转载或引用本文时必须同时征得该文章作者和夜空的同意
3、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
5、原文链接:blog.slogra.com/post-318.html

标签: linux 系统 shell root 环境 定制 登录信息 login

  1. 2014-08-18 12:57
    @amy:好的,多谢你的反馈哦
  1. gravatar amy
    2014-08-12 13:08
    经验证CentOS中写到.bashrc文件中,会导致winscp登录失败,放到.bash_profile 可以用winscp 登录!

评论: