Shell編程是一種在命令行環境中編寫程式的技術,常用於Linux和Unix系統。它主要使用Shell腳本語言來編寫程式。Shell編程常用於系統管理、自動化任務、批處理等領域。 常用的Shell腳本語言包括Bash、Csh、Tcsh和Zsh等。Bash是最常用的Shell編程語言,它是大多數Li... ...
Shell編程是一種在命令行環境中編寫程式的技術,常用於Linux和Unix系統。它主要使用Shell腳本語言來編寫程式。Shell編程常用於系統管理、自動化任務、批處理等領域。
常用的Shell腳本語言包括Bash、Csh、Tcsh和Zsh等。Bash是最常用的Shell編程語言,它是大多數Linux和Unix系統的預設Shell。
Shell編程中,變數使用"$“來引用,變數賦值使用”="。Shell程式中可以使用多種內建命令和Unix工具,如grep、sed、awk等。
編寫Shell腳本程式需要在文本編輯器中編寫代碼,並使用"chmod +x"命令給予可執行許可權,最後使用"./"執行該腳本程式。
舉個例子,在文本編輯器中編寫如下代碼,保存為"test.sh":
#!/bin/bash echo “Hello, World!”
使用如下命令給該腳本添加可執行許可權:
chmod +x test.sh
然後,執行該腳本:
./test.sh
這樣就能在終端中看到輸出 “Hello, World!”
請註意,在Windows上不能直接執行sh腳本,但是可以通過在Windows子系統 Linux (WSL) 中執行
實戰示例:
#!/bin/bash
log=/root/rw_test.log
test_dir=/test__remotehost_mount
r_dir1=01/suyan_nfs_remote
r_dir2=02/suyan_nfs_remote
r_dir3=03/suyan_nfs_remote
r_dir4=04/suyan_nfs_remote
zabbix_sender="/opt/aspire/product/zabbix/bin/zabbix_sender -z 30.153.1.77 -s"
host1=30.1.177.151
host2=30.1.177.152
host3=30.1.177.153
host4=30.1.177.154
read="time timeout 30 df -h"
write="time timeout 30 touch"
#test rw 30.1.177.151
function RW_151()
{
$read $test_dir$r_dir1 >> $log 2>&1 && $write $test_dir$r_dir1/$host1.txt >> $log 2>&1
if [ $? -eq 0 ];then
echo "RW.$host1 successfully `date +%Y-%m-%d-%H:%M:%S`" >> $log
$zabbix_sender $host1 -k "$host1"_rwtest -o "0"
else
echo "RW.$host1 failed `date +%Y-%m-%d-%H:%M:%S`" >> $log
$zabbix_sender $host1 -k "$host1"_rwtest -o "1"
fi
}
#test rw 30.1.177.152
function RW_152()
{
$read $test_dir$r_dir2 >> $log 2>&1 && $write $test_dir$r_dir2/$host2.txt >> $log 2>&1
if [ $? -eq 0 ];then
echo "RW.$host2 successfully `date +%Y-%m-%d-%H:%M:%S`" >> $log
$zabbix_sender $host2 -k "$host2"_rwtest -o "0"
else
echo "RW.$host2 failed `date +%Y-%m-%d-%H:%M:%S`" >> $log
$zabbix_sender $host2 -k "$host2"_rwtest -o "1"
fi
}
#test rw 30.1.177.153
function RW_153()
{
$read $test_dir$r_dir3 >> $log 2>&1 && $write $test_dir$r_dir3/$host3.txt >> $log 2>&1
if [ $? -eq 0 ];then
echo "RW.$host3 successfully `date +%Y-%m-%d-%H:%M:%S`" >> $log
$zabbix_sender $host3 -k "$host3"_rwtest -o "0"
else
echo "RW.$host3 failed `date +%Y-%m-%d-%H:%M:%S`" >> $log
$zabbix_sender $host3 -k "$host3"_rwtest -o "1"
fi
}
#test rw 30.1.177.154
function RW_154()
{
$read $test_dir$r_dir4 >> $log 2>&1 && $write $test_dir$r_dir4/$host4.txt >> $log 2>&1
if [ $? -eq 0 ];then
echo "RW.$host4 successfully `date +%Y-%m-%d-%H:%M:%S`" >> $log
$zabbix_sender $host4 -k "$host4"_rwtest -o "0"
else
echo "RW.$host4 failed `date +%Y-%m-%d-%H:%M:%S`" >> $log
$zabbix_sender $host4 -k "$host4"_rwtest -o "1"
fi
}
#running function
RW_151
RW_152
RW_153
RW_154
本文來自博客園,作者:Albert_M,轉載請註明原文鏈接:https://www.cnblogs.com/Albert-M/p/17647979.html