⑴ linux对应的安装脚本怎样查
在Linux 操作系统中,有一个系统软件包,它的功能类似于Windows里面的“添加/删除程序”,但是功能又比“添加/删除程序”强很多,它就是 Red Hat Package Manager(简称RPM)。此工具包最先是由Red Hat公司推出的,后来被其他Linux开发商所借用。由于它为Linux使用者省去了很多时间,所以被广泛应用于在Linux下安装、删除软件。下面就给大家介绍一下它的具体使用方法。
1.我们得到一个新软件,在安装之前,一般都要先查看一下这个软件包里有什么内容,假设这个文件是:Linux-1.4-6.i368.rpm,我们可以用这条命令查看:
rpm -qpi Linux-1.4-6.i368.rpm
系统将会列出这个软件包的详细资料,包括含有多少个文件、各文件名称、文件大小、创建时间、编译日期等信息。
2.上面列出的所有文件在安装时不一定全部安装,就像Windows下程序的安装方式分为典型、完全、自定义一样,Linux也会让你选择安装方式,此时我们可以用下面这条命令查看软件包将会在系统里安装哪些部分,以方便我们的选择:
rpm -qpl Linux-1.4-6.i368.rpm
3. 选择安装方式后,开始安装。我们可以用rpm-ivh Linux-1.4-6.i368.rpm命令安装此软件。在安装过程中,若系统提示此软件已安装过或因其他原因无法继续安装,但若我们确实想执行安装命令,可以在 -ivh后加一参数“-replacepkgs”:
rpm -ivh -replacepkgs Linux-1.4-6.i368.rpm
4.有时我们卸载某个安装过的软件,只需执行rpm-e <文件名>;命令即可。
5.对低版本软件进行升级是提高其功能的好办法,这样可以省去我们卸载后再安装新软件的麻烦,要升级某个软件,只须执行如下命令:rpm -uvh <文件名>;,注意:此时的文件名必须是要升级软件的升级补丁
6. 另外一个安装软件的方法可谓是Linux的独到之处,同时也是RMP强大功能的一个表现:通过FTP站点直接在线安装软件。当找到含有你所需软件的站点并与此网站连接后,执行下面的命令即可实现在线安装,譬如在线安装Linux-1.4-6.i368.rpm,可以用命令:
rpm -i ftp://ftp.pht.com/pub/linux/redhat/...-1.4-6.i368.rpm
7. 在我们使用电脑过程中,难免会有误操作,若我们误删了几个文件而影响了系统的性能时,怎样查找到底少了哪些文件呢?RPM软件包提供了一个查找损坏文件的功能,执行此命令:rpm -Va即可,Linux将为你列出所有损坏的文件。你可以通过Linux的安装光盘进行修复。
8.Linux系统中文件繁多,在使用过程中,难免会碰到我们不认识的文件,在Windows下我们可以用“开始/查找”菜单快速判断某个文件属于哪个文件夹,在Linux中,下面这条命令行可以帮助我们快速判定某个文件属于哪个软件包:
rpm -qf <文件名>;
9.当每个软件包安装在Linux系统后,安装文件都会到RPM数据库中“报到”,所以,我们要查询某个已安装软件的属性时,只需到此数据库中查找即可。注意:此时的查询命令不同于1和8介绍的查询,这种方法只适用于已安装过的软件包!命令格式:
rpm -参数<文件名>;
⑵ linux检查给定用户名密码是否为本机用户的shell脚本
检查用户名的脚本如下,检查密码据说要下载一个checkpassword,没用过不了解
sh check.sh
#!/bin/sh
echo "Input username:"
read username
if grep -q $username /etc/passwd
then
awk -F: /$username/'{print $7}' /etc/passwd
else
echo "$1 not local user"
fi
⑶ linux脚本 检查安装包是否安装 要求:安装包需使用参数形式传入
这个需要。一要求一些其他的东西。
⑷ linux脚本检查程序是否存在如果不存在则启动
linux脚本检查程序是否存在如果不存在则启动
vim xxx.sh
#!/bin/bash
count=`ps -ef| grep service-name | grep -v "grep" | wc -l `
echo "count: "$count", time: "$(date "+%Y-%m-%d %H:%M:%S");
if [ $count == 0 ]; then
service service-name start ;
fi
crontab -e 编辑定时任务 。《Linux就该这么学》 一起交流学习。
*/5 * * * * sh /paht/xxx.sh >> /var/log/xxx.log // 每5分钟执行一次
⑸ linux 系统怎么编写一个shell脚本,检查一个100台设备的是否都具有某项服务,如crond(定时任务
如何编写一个shell脚本
本文结合大量实例阐述如何编写一个shell脚本。
为什么要进行shell编程
在Linux系统中,虽然有各种各样的图形化接口工具,但是sell仍然是一个非常灵活的工具。Shell不仅仅是命令的收集,而且是一门非常棒的编程语言。您可以通过使用shell使大量的任务自动化,shell特别擅长系统管理任务,尤其适合那些易用性、可维护性和便携性比效率更重要的任务。
下面,让我们一起来看看shell是如何工作的:
建立一个脚本
Linux中有好多中不同的shell,但是通常我们使用bash (bourne again shell) 进行shell编程,因为bash是免费的并且很容易使用。所以在本文中笔者所提供的脚本都是使用bash(但是在大多数情况下,这些脚本同样可以在bash的大姐,bourne shell中运行)。
如同其他语言一样,通过我们使用任意一种文字编辑器,比如nedit、kedit、emacs、vi
等来编写我们的shell程序。
程序必须以下面的行开始(必须方在文件的第一行):
#!/bin/sh
符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/sh来执行程序。
当编辑好脚本时,如果要执行该脚本,还必须使其可执行。
要使脚本可执行:
chmod +x filename
然后,您可以通过输入: ./filename 来执行您的脚本。
⑹ linux脚本,循环检测程序,按照条件执行
#!/bin/bash
while :
do
ps aux |grep -v firefox >/dev/null
if [ $? -eq 0 ];then
firefox &
elif [ $? -ge 2 ];then
killall firefox
fi
sleep 300
done
⑺ 求linux脚本,就是服务器自动检测网络,每个一段时间自动检测,丢包严重或断网,就自动重启服务器,求高手
因为服务器自身网络丢包和断网
1.数据交互过大
2.一段时间网口down掉
其实只要
/etc/init.d/network restart
并不需要重启。
在/etc/rc.d/rc.local最下面加一句话
network.sh &
把下面脚本放到/usr/bin/目录
并且给她加权限
chmod +x /usr/bin/network.sh
network.sh脚本:
#!/bin/sh
#echo "请输入你的网关地址"
#read sgateway
sgateway="192.168.3.187"
echo "连接的的网关是$sgateway"
delay=5000
echo "设置最大延迟不超过$delay毫秒"
nexttime=18
echo "每隔$nexttime秒进行一次检查"
echo "########################################"
while :
do
network=`ping -c 1 $sgateway | awk 'NR==2 {print $7}' | sed "s/=/ /g" | awk '{print $2}'`
expr ${network} + 0 1>/dev/null 2>&1
if [ $? -eq 0 ]; then
/etc/init.d/network restart
else
value_n=`echo $network | sed "s/\.//g"`
if [ "$value_n" -lt "$delay" ];
then
echo "检查结果为"
echo "网络通畅"
echo "网络延迟为$network秒"
echo "########################"
else
/etc/init.d/network restart
fi
fi
sleep $nexttime
done
不给分不给力啊
⑻ linux中shell写简单的检测用户重复登入脚本
if [ ! -f user.deny ]
then
echo "user.deny not exist!"
exit
fi
while [ 1 ]
do
sleep 3
for login_user in `who|cut -d" " -f1|sort -u -k1`
do
if grep $login_user user.deny >/dev/null
then
echo "Warning:$login_user logined"
fi
done
done
⑼ 如何编写自己的Linux安全检查脚本
脚本大致内容: 基本信息统计(IP地址、MAC地址、端口信息、服务信息等)、主机安全检查(包括等保三级要求主机相关的检查点)、系统性能统计(暂时未加入分析)、恶意代码、程序检查等检查点。
脚本内容涉及到:
1、查看系统密码文件修改时间
2、查看是否开启了ssh服务
3、查看系统SSH远程访问设置策略(host.deny拒绝列表)
4、查看shell是否设置超时锁定策略
5、查看syslog日志审计服务是否开启
6、查看syslog日志是否开启外发
7、查看passwd文件中有哪些特权用户
8、查看系统中是否存在空口令账户
9、PHP、JSP、perl、Python、HTML、以及linux下可执行文件内容的检查
里面列举了一些常见webshell、提权EXP、以及Python扫描工具、嗅探工具的特征,如果发现此类相关的文件,则会显示出来,或者拷贝一份到/tmp/目录下
例如:能扫描到的linux下提权工具:
一共是172个文件。都可以扫描的到。。。。
其实整个脚本相对起来比较简单,主要用到的命令为
find / -type
if语句
awk命令
more
egrep
等命令组成。
比如说awk命令,我们用more或cat命令,读取某个文件内容,然后通过awk进行筛选和输出,来显示我们想要看的东西
例如:
more /etc/login.defs | grep -E "PASS_MAX_DAYS" | grep -v "#" |awk -F' ' '{if($2!=90){print "/etc/login.defs里面的"$1 "设置的是"$2"天,请管理员改成90天。"}}'
从这里我们可以看到,通过more来打开/etc/login.defs文件,并查找关键字 “PASS_MAX_DAYS”, 用awk命令,筛选以”为分隔符的内容,用作判断,如果$2第二个分隔符位置的内容不等于90,则输出该内容。
同理,任意针对文件内容做筛选的结果,都可以通过这样的方式去显示我们想要显示的内容。
又例如:
echo "查看系统中存在哪些非系统默认用户"
echo "root:x:“该值大于500为新创建用户,小于或等于500为系统初始用户”"
more /etc/passwd |awk -F ":" '{if($3>500){print "/etc/passwd里面的"$1 "的值为"$3",请管理员确认该账户是否正常。"}}'
echo ------------------------------------------------------------------------
if语句相关:
echo --------------------------------------------------------------------------
echo "检查系统文件完整性2(MD5检查)"
echo "该项会获取部分关键文件的MD5值并入库,默认保存在/etc/md5db中"
echo "如果第一次执行,则会提示md5sum: /sbin/portmap: 没有那个文件或目录"
echo "第二次重复检查时,则会对MD5DB中的MD5值进行匹配,来判断文件是否被更改过"
file="/etc/md5db"
if [ -e "$file" ]; then md5sum -c /etc/md5db 2>&1;
else
md5sum /etc/passwd >>/etc/md5db
md5sum /etc/shadow >>/etc/md5db
md5sum /etc/group >>/etc/md5db
md5sum /usr/bin/passwd >>/etc/md5db
md5sum /sbin/portmap>>/etc/md5db
md5sum /bin/login >>/etc/md5db
md5sum /bin/ls >>/etc/md5db
md5sum /bin/ps >>/etc/md5db
md5sum /usr/bin/top >>/etc/md5db;
fi
echo ----------------------------------------------------------------------
这里呢,对部分敏感文件的MD5值做了下验证,大致思路是,先检查 /etc/md5db 是否存在,如果不存在的话,则将所涉及文件的MD5值入库,并保存到 /etc/md5db文件中,当我们第二次对服务器进行检查时,则会对比两次的MD5值,如果MD5值发生变化,则会进行提醒。
脚本本身没什么复杂的东西,我先贴出部分内容,供大家参考下。
#!/bin/bash
echo " (__)"
echo " (oo)"
echo " /------\/ "
echo " / | || "
echo " * /\---/\ "
echo " ~~ ~~ "
echo "...."Are You Ready?"..."
read key
echo "警告:本脚本只是一个检查的操作,未对服务器做任何修改,管理员可以根据此报告进行相应的设置。"
echo ---------------------------------------主机安全检查-----------------------
echo "系统版本"
uname -a
echo --------------------------------------------------------------------------
echo "本机的ip地址是:"
ifconfig | grep --color "\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}"
echo --------------------------------------------------------------------------
awk -F":" '{if($2!~/^!|^*/){print "("$1")" " 是一个未被锁定的账户,请管理员检查是否需要锁定它或者删除它。"}}' /etc/shadow
echo --------------------------------------------------------------------------
more /etc/login.defs | grep -E "PASS_MAX_DAYS" | grep -v "#" |awk -F' ' '{if($2!=90){print "/etc/login.defs里面的"$1 "设置的是"$2"天,请管理员改成90天。"}}'
echo --------------------------------------------------------------------------
more /etc/login.defs | grep -E "PASS_MIN_LEN" | grep -v "#" |awk -F' ' '{if($2!=6){print "/etc/login.defs里面的"$1 "设置的是"$2"个字符,请管理员改成6个字符。"}}'
echo --------------------------------------------------------------------------
more /etc/login.defs | grep -E "PASS_WARN_AGE" | grep -v "#" |awk -F' ' '{if($2!=10){print "/etc/login.defs里面的"$1 "设置的是"$2"天,请管理员将口令到期警告天数改成10天。"}}'
echo --------------------------------------------------------------------------
grep TMOUT /etc/profile /etc/bashrc > /dev/null|| echo "未设置登录超时限制,请设置之,设置方法:在/etc/profile或者/etc/bashrc里面添加TMOUT=600参数"
echo --------------------------------------------------------------------------
if ps -elf |grep xinet |grep -v "grep xinet";then
echo "xinetd 服务正在运行,请检查是否可以把xinnetd服务关闭"
else
echo "xinetd 服务未开启"
fi
echo --------------------------------------------------------------------------
echo "查看系统密码文件修改时间"
ls -ltr /etc/passwd
echo --------------------------------------------------------------------------
echo "查看是否开启了ssh服务"
if service sshd status | grep -E "listening on|active \(running\)"; then
echo "SSH服务已开启"
else
echo "SSH服务未开启"
fi
echo --------------------------------------------------------------------------
echo "查看是否开启了TELNET服务"
if more /etc/xinetd.d/telnetd 2>&1|grep -E "disable=no"; then
echo "TELNET服务已开启 "
else
echo "TELNET服务未开启 "
fi
echo --------------------------------------------------------------------------
echo "查看系统SSH远程访问设置策略(host.deny拒绝列表)"
if more /etc/hosts.deny | grep -E "sshd: ";more /etc/hosts.deny | grep -E "sshd"; then
echo "远程访问策略已设置 "
else
echo "远程访问策略未设置 "
fi
echo --------------------------------------------------------------------------