Linux中的shell腳本練習

1.判斷字符串是否為空

#!/usr/bin/bash
while : #:默認值為真
do
read -p "請輸入你的密碼: " a
pass=123456
if [ -z $a ];thenecho "您輸入的密碼不能為空"exit 1
elseif [ $a = $pass ];thenecho "登錄成功"breakelseecho "您的密碼輸入有誤,請重新輸入"fi
fi
done

2.判斷文件是否存在

#/bin/bash
if [ -f /opt/a.txt ];thenecho "ok"
elseecho "不存在,正在創建"touch /opt/a.txt
fi

3.必須在腳本后加上適當的參數腳本才能正確執行

#!/bin/bash
if [ "$1" = "hello" ]; thenecho "Hello! How are you ?"
elif [ "$1" = "" ]; thenecho "You MUST input parameters"
elseecho "The only accept parclear ameter is hello"
fi

4.測試ip地址主機位從2到100的機器是否存活,并把存活的機器記錄到文本文件alivehost.txt內。(使用ping命令)

#!/usr/bin/bash
src_ip="192.168.246"
for i in {2..254}
do{ping -c1 $src_ip.$i &>/dev/nullif [ $? -eq 0 ];thenecho "alive: $src_ip.$i" >> ip_up.txtecho "alive: $src_ip.$i"elseecho "down: $src_ip.$i" >> ip_down.txtecho "down: $src_ip.$i"fi} &
done
wait
echo "finish..."

5.根據用戶輸入foo打印bar,輸入bar打印foo,否則輸入只能輸入foo|bar

#!/usr/bin/env bash
case $1 infoo)echo "bar";;bar)echo "foo";;*)echo "Usage:$0 '{foo|bar}'";;
esac

6.隨機數生成8位隨機密碼

#!/bin/bash
string="AFJALKGJglekrjgkASKJFEKFELjjglkerjgwej235834095ejglkdjg"
sum=''
for ((i=1; i<=8; i++))    #指定循環8次
dolen=${#string}   #獲取變量的長度num=$[RANDOM % $len]    #使用變量長度中生成隨機數(作為取字符的索引)value=${string:$num:1}    #截取指定索引的字符sum+=$value   #字符追加到sum變量中
done
echo $sum 

7.for循環批量創建用戶

#!/usr/bin/bash
read -p "請設置用戶名/數量/密碼: " prefix num pass
cat <<-EOF
用戶前綴:$prefix
用戶數量:$num
用戶密碼:$pass
EOF
for i in $(seq 1 $num)
do
user=$prefix$i
id $user &> /dev/null
if [ $? -eq 0 ];thenecho "$user is already exist!"exit 0
elseuseradd $user &> /dev/null && echo $pass | passwd --stdin $user &>/dev/null
fi
done
echo "starting create users..."

8.通過一個文件批量創建用戶:
#背景:寫一個腳本,滿足以下需求及應用,如一個文件的內容如下,根據文件內容實現批量創建用戶,第一列為用戶名,第二列為密碼

[root@localhost script]# vim user_pass.txt #創建用戶和密碼文件
user1 123456
user2 654321
user3 1122334
user4 4433221
user5 9876543
[root@localhost script]# vim create_user.sh #編寫腳本
#!/usr/bin/bash[ $UID -ne 0 ] && exit 1
while read line
douser=`echo $line | awk '{print $1}'`pass=`echo $line | awk '{print $2}'`id $user &> /dev/null || useradd $user && echo $pass | passwd $user --stdin
done < /opt/test/script/user_pass.txt

9.隨機數實現猜數字游戲

#!/bin/bash
num=$[RANDOM % 10]
i=1 #定義i為循環條件
a=0 #定義a為猜的次數變量
while [ $i -eq 1 ]
do
read -p "請輸入你猜的數字(0~10):" cif [ $c -eq $num ];thenecho "恭喜你猜對了!"let a++let i++elif [ $c -gt $num ];thenecho "你猜高了,請繼續!"let a++elif [ $c -lt $num ];thenecho "你猜低了,請繼續!"let a++fi
done
echo "你一共猜了${a}次。"

10.建立ssh免密連接腳本

[root@mysql-server script]# cat shuzu.sh 
#!/bin/bash
server_ip=(192.168.209.166 192.168.209.168 192.168.209.169)
server_name=(web-1 web-2 mysql-server)
for (( i=0; i<${#server_ip[@]}; i++ ))
doecho $i-----${server_ip[i]}-----${server_name[i]}
done
echo "請輸入要連接的序號: " && read n 
if [[ $n -ge 0 && $n -lt ${#server_ip[@]} ]];thenecho "正在鏈接${server_ip[n]}"sleep 1/root/expect/expect.sh ${server_ip[n]}
elseecho "請輸入范圍內的序號..."sleep 1
fi

/root/expect/expect.sh

#!/usr/bin/expect
set user root
set pass 1
set ip [ lindex $argv 0 ] 
set timeout 10spawn ssh $user@$ip
expect {"yes/no" {  send "yes\r"; exp_continue }"password:" { send "$pass\r" };
}
interact

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/78830.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/78830.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/78830.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

使用命令關閉Redis服務端

使用命令關閉Redis服務端。 命令 redis-cli -a 111111 -p 6379 shutdown 有些人redis的端口不是6379&#xff0c;那就自己查一下 參數解釋&#xff1a; -a&#xff1a;Redis密碼 -p&#xff1a;Redis端口 shutdown&#xff1a;關閉命令

嵌入式RTOS實戰:uC/OS-III最新版移植指南(附項目源碼)

文章目錄 前言一、uC/OS簡介二、工程移植2.1 下載ucos源碼2.2 創建空白工程2.3 拷貝ucosiii源碼文件2.3.1 UC-CONFIG2.3.2 UC-CPU2.3.3 UC-LIB2.3.4 UC-OS3 2.3 添加工程文件分組及路徑2.4 代碼首次編譯2.5 源碼修改2.5.1 cpu_cfg.h2.5.2 os_cpu_c.c2.5.3 lib_cfg.h2.5.4 sys.h…

TypeScript中的函數類型定義與類型約束

函數類型定義與類型約束 一、核心概念&#xff1a;類型別名與函數類型 1. 類型別名&#xff08;Type Alias&#xff09; 定義 類型別名使用 type 關鍵字為現有類型創建一個新名稱&#xff0c;可以用于&#xff1a; 基礎類型&#xff08;如 string、number&#xff09;&…

相機DreamCamera2錄像模式適配尺寸

在開發中遇到 一個問題&#xff0c;相機切換視頻模式時&#xff0c;預覽時&#xff0c;界面不能充滿屏幕兩側有黑邊&#xff0c;客戶要求修改&#xff0c;在此記錄 一問題現象&#xff1a; 系統相機在視頻模式下預覽時如下現象如圖1&#xff0c;期望現象如圖2: 圖1 …

SpringCloud組件——Gateway

一.網關 1.問題提出 我們通過Eureka&#xff0c;Nacos解決了服務注冊&#xff0c;服務發現的問題&#xff0c;使用SpringCloud LoadBalance解決了負載均衡的問題&#xff0c;使用OpenFeign解決了遠程調用的問題。 但是當前所有微服務的接口都是直接對外暴露的&#xff0c;可…

C#中構造器及屬性的加載順序

一.基本原則: 先加載靜態構造函數和靜態字段,后加載普通構造函數和普通字段;先加載基類再加載子類; 二.具體的加載順序: 父類靜態字段--->父類靜態構造函數--->子類靜態字段--->子類靜態構造函數--->父類實例字段---> 父類實例構造函數--->子類實例字段-…

Python面試問題

一、Python 基礎 1. Python 的特點 動態類型&#xff1a;變量無需聲明類型。解釋型語言&#xff1a;逐行解釋執行。支持多種編程范式&#xff08;面向對象、函數式、過程式&#xff09;。 2. 列表&#xff08;List&#xff09;與元組&#xff08;Tuple&#xff09;的區別 特…

計算機視覺進化論:YOLOv12、YOLOv11與Darknet系YOLOv7的微調實戰對比

摘要 YOLO系列作為實時目標檢測領域的重要里程碑&#xff0c;持續引領速度與精度的平衡發展。本文圍繞YOLOv7&#xff08;基于Darknet框架&#xff09;、YOLOv11及YOLOv12&#xff0c;系統、深入地對比了三款模型的架構創新、微調策略、核心技術及應用場景。我們詳細解析了三者…

SQL Server 存儲過程開發規范

SQL Server 存儲過程開發規范&#xff08;高級版&#xff09; 1. 總則 1.1 目標 本規范旨在&#xff1a; 提高存儲過程的事務一致性、異常可追蹤性、錯誤透明度。 統一日志記錄、錯誤碼管理、鏈路追蹤&#xff08;Trace ID&#xff09;。 支持復雜事務場景&#xff08;嵌套…

opendds的配置

配置的使用 文檔中說明有4種使用配置的方式&#xff1a; 環境變量 命令行參數&#xff08;將覆蓋環境變量中的配置&#xff09; 配置文件&#xff08;不會覆蓋環境變量或命令行參數中的配置&#xff09; 用戶調用的 API&#xff08;將覆蓋現有配置&#xff09; 這里對開發…

(Go Gin)上手Go Gin 基于Go語言開發的Web框架,本文介紹了各種路由的配置信息;包含各場景下請求參數的基本傳入接收

1. 路由 gin 框架中采用的路優酷是基于httprouter做的 HttpRouter 是一個高性能的 HTTP 請求路由器&#xff0c;適用于 Go 語言。它的設計目標是提供高效的路由匹配和低內存占用&#xff0c;特別適合需要高性能和簡單路由的應用場景。 主要特點 顯式匹配&#xff1a;與其他路由…

Marin說PCB之----板材的替換注意事項

由于最近很多武林上的主流門派都需要采用將的本方案&#xff0c;小編所在的宗門古族也是不例外了&#xff0c;宗門大長老韓立現在想把之前一直在用的板材EM370Z替換成生益的Autolad3&#xff0c;讓我去拿資料分析一下是否可以替換。下圖所示是就是小編我做的一個表格關于兩家板…

4月28日信息差全景:國際局勢、科技突破與市場震蕩一、國際政治與安全:俄烏沖突關鍵轉折

一、國際政治與安全:俄烏沖突關鍵轉折 1. 烏克蘭反攻進展與情報差異 前線動態: 俄國防部稱在頓涅茨克擊退烏軍三次進攻,摧毀12輛坦克;烏方則宣布在巴赫穆特南部推進2公里,雙方戰報存在顯著差異。 信息差根源:戰場信息管控導致西方媒體與俄媒報道截然不同。 國際援助: 美…

關系數據的可視化

目錄 【實驗目的】 【實驗原理】 【實驗環境】 【實驗步驟】 一、安裝Python所需要的第三方模塊 二、實驗 【實驗總結】 【實驗目的】 1.掌握關系數據在大數據中的應用 2.掌握關系數據可視化方法 3. python 程序實現圖表 【實驗原理】 在傳統的觀念里面&#xff0…

夏季道路安全的AI革命:節省人力、提升效率

AI夏季道路安全&#xff1a;用智能算法守護每一條街道 背景&#xff1a;夏季道路安全的挑戰與機遇 夏季是道路安全事件的高發期。高溫天氣容易導致駕駛員疲勞、行人行為異常&#xff08;如跌倒或中暑&#xff09;&#xff0c;同時&#xff0c;車流量增加、夜間活動頻繁…

HTML標記語言_@拉鉤教育【筆記】

目錄 1.文本標簽 2.格式化標簽 3.圖片標簽 4.超鏈接標簽 5.表格標簽 6表單標簽 6.1 6.2 6.3 7.行內框架(超鏈接內套一個頁面) 8.多媒體標簽(音/視頻) 1.文本標簽 2.格式化標簽 3.圖片標簽 4.超鏈接標簽 5.表格標簽 6表單標簽 6.1 6.2 6.3 7.行內框架(超鏈接內套一個…

Python 中調用方法內部定義的類詳解(類在方法中的各種操作)

更多內容請見: python3案例和總結-專欄介紹和目錄 文章目錄 一、基本概念1.1 方法內部定義類概述1.2 方法內部定義類的特點1.3 替代方案二、基本使用2.1 直接在方法內部使用2.2 返回類定義供外部使用2.3 返回類的實例2.4 作為閉包使用(訪問外部變量)三、高級用法3.1 動態類創…

第36課 常用快捷操作——用“鼠標右鍵”退出當前命令

概述 在AD 20軟件中&#xff0c;很多的命令都是可以一直連續下去的&#xff0c;比方說放置一個元器件符號&#xff0c;如果你當中不取消的話&#xff0c;那就可以一直執行下去&#xff0c;放完一個接著放下一個&#xff0c;放完一個接著放下一個…… 想要退出這種連續進行的命…

FFTW3.3.10庫與QT結合的使用

FFTW&#xff08;Fastest Fourier Transform in the West&#xff09;是世界上最快的FFT&#xff0c; 實測計算長度為10000的double數組&#xff0c; 單次運行時間在2ms左右。為了詳細了解FFTW以及為編程方便&#xff0c;特將用戶手冊看了一下&#xff0c;并結合手冊制作了以下…

服務器異地備份,服務器異地備份有哪些方法?

服務器異地備份是應對區域性災難&#xff08;如地震、火災、洪水&#xff09;或人為事故&#xff08;如誤刪除、勒索病毒攻擊&#xff09;的關鍵策略&#xff0c;其核心在于將數據副本存儲在物理隔離的地理位置&#xff0c;確保主數據中心故障時仍可恢復業務。 以下是主流的異地…