⑴ 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 --------------------------------------------------------------------------