導航:首頁 > IDC知識 > 伺服器shell腳本

伺服器shell腳本

發布時間:2021-03-29 09:20:21

1、如何編寫一個shell腳本,可以自動從伺服器A登陸到伺服器B,並在伺服器B上執行一個操作

expect -c "
set timeout 30;
spawn /usr/bin/ssh admin@制$ServerB-IP
expect {
\"*yes/no*\" {send \"yes\r\"; exp_continue}
\"*password*\" {send \"xxx\r\";}

expect {
\"*# \" {send \"tar zcvf ~/hello.tar.gz hello\r\"}
\"*$ \" {send \"tar zcvf ~/hello.tar.gz hello\r\"}
}
interact"

這樣試試

2、如何部署linux伺服器監控shell腳本

1、查看主機網卡流量

#!/bin/bash
#network
#Mike.Xu
while : ; do
time=』date +%m」-」%d」 「%k」:」%M』
day=』date +%m」-」%d』
rx_before=』ifconfig eth0|sed -n 「8″p|awk 『{print $2}』|cut -c7-』
tx_before=』ifconfig eth0|sed -n 「8″p|awk 『{print $6}』|cut -c7-』
sleep 2
rx_after=』ifconfig eth0|sed -n 「8″p|awk 『{print $2}』|cut -c7-』
tx_after=』ifconfig eth0|sed -n 「8″p|awk 『{print $6}』|cut -c7-』
rx_result=$[(rx_after-rx_before)/256]
tx_result=$[(tx_after-tx_before)/256]
echo 「$time Now_In_Speed: 「$rx_result」kbps Now_OUt_Speed: 「$tx_result」kbps」
sleep 2
done

2、系統狀況監控

#!/bin/sh
#systemstat.sh
#Mike.Xu
ip=192.168.1.227
top -n 2| grep 「Cpu」 >>./temp/cpu.txt
free -m | grep 「Mem」 >> ./temp/mem.txt
df -k | grep 「sda1″ >> ./temp/drive_sda1.txt
#df -k | grep sda2 >> ./temp/drive_sda2.txt
df -k | grep 「/mnt/storage_0″ >> ./temp/mnt_storage_0.txt
df -k | grep 「/mnt/storage_pic」 >> ./temp/mnt_storage_pic.txt
time=`date +%m」.」%d」 「%k」:」%M`
connect=`netstat -na | grep 「219.238.148.30:80″ | wc -l`
echo 「$time $connect」 >> ./temp/connect_count.txt

3、監控主機的磁碟空間,當使用空間超過90%就通過發mail來發警告

#!/bin/bash
#monitor available disk space
SPACE=』df | sed -n 『/ / $ / p』 | gawk 『{print $5}』 | sed 』s/%//』
if [ $SPACE -ge 90 ]
then
[email protected]
fi

4、監控CPU和內存的使用情況

#!/bin/bash
#script to capture system statistics
OUTFILE=/home/xu/capstats.csv
DATE=』date +%m/%d/%Y』
TIME=』date +%k:%m:%s』
TIMEOUT=』uptime』
VMOUT=』vmstat 1 2′
users=』echo $TIMEOUT | gawk 『{print $4}』 『
LOAD=』echo $TIMEOUT | gawk 『{print $9}』 | sed 「s/,//』 『
FREE=』echo $VMOUT | sed -n 『/[0-9]/p』 | sed -n 』2p』 | gawk 『{print $4} 『 『
IDLE=』echo $VMOUT | sed -n 『/[0-9]/p』 | sed -n 』2p』 |gawk 『{print $15}』 『
echo 「$DATE,$TIME,$USERS,$LOAD,$FREE,$IDLE」 >> $OUTFILE

5、全方位監控主機

#!/bin/bash
# check_xu.sh
# 0 * * * * /home/check_xu.sh
DAT=」`date +%Y%m%d`」
HOUR=」`date +%H`」
DIR=」/home/oslog/host_${DAT}/${HOUR}」
DELAY=60
COUNT=60
# whether the responsible directory exist
if ! test -d ${DIR}
then
/bin/mkdir -p ${DIR}
fi
# general check
export TERM=linux
/usr/bin/top -b -d ${DELAY} -n ${COUNT} > ${DIR}/top_${DAT}.log 2>&1 &
# cpu check
/usr/bin/sar -u ${DELAY} ${COUNT} > ${DIR}/cpu_${DAT}.log 2>&1 &
#/usr/bin/mpstat -P 0 ${DELAY} ${COUNT} > ${DIR}/cpu_0_${DAT}.log 2>&1 &
#/usr/bin/mpstat -P 1 ${DELAY} ${COUNT} > ${DIR}/cpu_1_${DAT}.log 2>&1 &
# memory check
/usr/bin/vmstat ${DELAY} ${COUNT} > ${DIR}/vmstat_${DAT}.log 2>&1 &
# I/O check
/usr/bin/iostat ${DELAY} ${COUNT} > ${DIR}/iostat_${DAT}.log 2>&1 &
# network check
/usr/bin/sar -n DEV ${DELAY} ${COUNT} > ${DIR}/net_${DAT}.log 2>&1 &
#/usr/bin/sar -n EDEV ${DELAY} ${COUNT} > ${DIR}/net_edev_${DAT}.log 2>&1 &

放在crontab里每小時自動執行:
0 * * * * /home/check_xu.sh

這樣會在/home/oslog/host_yyyymmdd/hh目錄下生成各小時cpu、內存、網路,IO的統計數據。如果某個時間段產生問題了,就可以去看對應的日誌信息,看看當時的主機性能如何。

3、shell腳本 ,在linux 下運行一個shell腳本登陸遠程unix 伺服器,請問這個腳本如何寫?

^#!/bin/bash
tmptty=``
tmptty=`basename $tmptty`
tmpname=`whoami`
ip="xxx" #目標主機地址
inp1="xxx^M" #主機的用戶名,,注意必須有^M
inp2="xxx^M" #主機的密碼,注意必須有^M
inp3="ls^M"
inp4="pwd^M"
inputfile=in
outputfile=out.log
rm -fr $inputfile
rm -fr $outputfile
mknod $inputfile p
touch $outputfile
#file description 7 for out and 8 for in
exec 7<>$outputfile
exec 8<>$inputfile
telnet $ip <&8 >&7 &
sleep 2; echo $inp1 >> $inputfile
sleep 2; echo $inp2 >> $inputfile
sleep 2; echo $inp3 >> $inputfile
sleep 2; echo $inp4 >> $inputfile
tail -f $outputfile &
while true
do
read str
if [[ $str = "quit" || $str = "exit" ]]
then echo $str >> $inputfile exit
else echo $str >> $inputfile
fi
done
ps -ef | grep telnet | grep -v grep | grep -v telnetd | grep $tmptty | grep $tmpname | awk '{print " kill -9", $2}' | sh
ps -ef | grep tail | grep -v grep | grep -v telnetd | grep $tmptty | grep $tmpname | awk '{print " kill -9", $2}' | sh

4、兩台Linux伺服器,在A寫一個shell腳本復制到B,如何在A上控制B運行該shell文件?

那隻有在A上面ssh到B,然後在B上運行shell
或者配一個免秘鑰,然後在A直接用腳本直接運行,不過原理還是ssh到B,然後再執行命令

5、ICP連接伺服器執行shell腳本

看來你的hosts文件夾比較大啊。。。
more把後面的hosts文件一頁一頁的顯示,但把這頁傳到後面處理完後,它不會動啊。。。要你手動按任何鍵繼續。。。改為cat就行了

6、如何寫shell腳本自動通過ssh命令登錄到伺服器

用EXPECT實現用密碼登錄,也可配置成不需要密碼

#!/usr/bin/expect -f

if { $argc < 3 } {

puts stderr "Usage: $argv0 IPAdress Login OldPasswd"

exit
}

set IPADDR [lindex $argv 0]
set LOGIN [lindex $argv 1]
set OLD_PW [lindex $argv 2]

set timeout 30

stty -echo

spawn ssh $IPADDR -l $LOGIN
expect {
"*Password:*" {
send "$OLD_PW\r"
exp_continue
} "*Last login:*" {
#interact
exit 0
} timeout {
send_user "connection to $IPADDR timeout!\n"
exit 1
} "*incorrect*" {
send_user "password incorrect!\n"
exit 2
} "*Permission*" { #for LINUX ssh
send_user "password Error!\n"
exit 2
} eof {
exit 3
}
}

7、怎麼在一個伺服器添加shell腳本

1、編寫腳本
2、給與腳本可執行許可權
3、將腳本名寫入/etc/rc.local文件中

8、怎麼自動調用另一台伺服器的shell腳本

建議使用rsync吧 ,直接可以同步,腳本話也沒啥,就一個定時任務

9、怎樣在web項目中通過程序控制shell腳本執行並且向shell腳本中傳進參數,實現兩個伺服器上的文件同步?

java是可以執行shell腳本的,如下:

//command就是你在linux上執行腳本的字元串命令

StringBuffer command = new StringBuffer();
command.append(SHELL).append(BLANK);
command.append(CREATEUSER_SH).append(BLANK);
command.append(fsi.getFtpIp()).append(BLANK);
command.append(fsi.getRootPasswd()).append(BLANK);
command.append(fsi.getFixHomePath() + ftpInfo.getHomePath()).append(BLANK);
command.append(ftpInfo.getFtpUser()).append(BLANK);
command.append(ftpInfo.getFtpPasswd()).append(BLANK);
command.append(ftpInfo.getFlag());

// 進程p執行腳本
p = Runtime.getRuntime().exec(command.toString());

與伺服器shell腳本相關的知識