導航:首頁 > 編程系統 > linuxandunixshell

linuxandunixshell

發布時間:2023-09-12 04:27:03

A. UNIX/linux shell腳本 if語句的幾個案例

if [條件測試1] && (||) [條件測試2]; //以if為起始,後面可以接若
then //干個判斷式,使用&&或||

第一段程序執行內容

elif [條件測試3] && (||) [條件測試4]; //第二段的判斷,如果第一
then //段沒有符合就來此搜尋條件

第二段程序執行內容

else //當前兩段都不符合時,就以這段內容來執行。
第三段程序執行內容
fi //結束if then的條件判斷
-------------------------------------------------------------------------------------------------
#!/bin/sh
echo -n 「Please input the answer;」 //-n不換行

read Input
if [ $Input = y ]
then
echo "The answer is right"
elif [ $Input = n ]
then
echo "The answer is wrong"
else
echo "Bad Input"
fi
# end

B. linux/unix -shell值iptables基礎知識

原文參考:
iptables防火牆可以用於創建過濾判手(filter)與NAT規則。所有Linux發行版都能使用iptables,因此理解如何配置 iptables將會幫助你更有效地管理Linux防火牆。如果你是第一次接觸iptables,你會覺得它很復雜,但是一旦你理解iptables的工 作原理,你會發現其實它很簡單。

首先介紹iptables的結構:iptables -> Tables -> Chains -> Rules. 簡單地講,tables由chains組成,而chains又由rules組成。如下圖所示。 [圖片上傳失敗...(image-ba5408-1536195185275)]

圖: IPTables Table, Chain, and Rule Structure

一、iptables的表與鏈

iptables具有Filter, NAT, Mangle, Raw四種內建表啟沖塵:

1. Filter表

Filter表示iptables的默認表,因此如果你沒有自定義表,那麼就默認使用filter表,它具有以下三種內建鏈:

2. NAT表

NAT表有三種內建鏈:

3. Mangle表

Mangle表用於指定如何處理數據包。它能改變TCP頭中的QoS位。Mangle表具有5個內建鏈:

4. Raw表

Raw表用於處理異常,它具有2個內建鏈:

5.小結

下圖展示了iptables的三個內建表:

[圖片上傳失敗...(image-753d8c-1536195185272)]

圖: IPTables 內建表

二、IPTABLES 規則(Rules)

牢記以下三點式理解iptables規則的關鍵:

目標值(Target Values)

下面是你可以在target里指定的特殊值:

如果你執行iptables –list你將看到防火牆上的可用規則。下例說明當前系統沒有定義防火牆,你可以看悄禪到,它顯示了默認的filter表,以及表內默認的input鏈, forward鏈, output鏈。

Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

查看mangle表:

查看NAT表:

查看RAW表:

!注意:如果不指定 -t 選項,就只會顯示默認的 filter 表。因此,以下兩種命令形式是一個意思:

(or)

以下例子表明在filter表的input鏈, forward鏈, output鏈中存在規則:

Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 RH-Firewall-1-INPUT all — 0.0.0.0/0 0.0.0.0/0

Chain FORWARD (policy ACCEPT)
num target prot opt source destination
1 RH-Firewall-1-INPUT all – 0.0.0.0/0 0.0.0.0/0

Chain OUTPUT (policy ACCEPT)
num target prot opt source destination

Chain RH-Firewall-1-INPUT (2 references)
num target prot opt source destination
1 ACCEPT all – 0.0.0.0/0 0.0.0.0/0
2 ACCEPT icmp – 0.0.0.0/0 0.0.0.0/0 icmp type 255
3 ACCEPT esp – 0.0.0.0/0 0.0.0.0/0
4 ACCEPT ah – 0.0.0.0/0 0.0.0.0/0
5 ACCEPT udp – 0.0.0.0/0 224.0.0.251 udp dpt:5353
6 ACCEPT udp – 0.0.0.0/0 0.0.0.0/0 udp dpt:631
7 ACCEPT tcp – 0.0.0.0/0 0.0.0.0/0 tcp dpt:631
8 ACCEPT all – 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
9 ACCEPT tcp – 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
10 REJECT all – 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited

以上輸出包含下列欄位:

三、清空所有iptables規則

在配置iptables之前,你通常需要用iptables –list命令或者iptables-save命令查看有無現存規則,因為有時需要刪除現有的iptables規則:

iptables –flush
或者
iptables -F

這兩條命令是等效的。但是並非執行後就萬事大吉了。你仍然需要檢查規則是不是真的清空了,因為有的linux發行版上這個命令不會清除NAT表中的規則,此時只能手動清除:

iptables -t NAT -F

四、永久生效

當你刪除、添加規則後,這些更改並不能永久生效,這些規則很有可能在系統重啟後恢復原樣。為了讓配置永久生效,根據平台的不同,具體操作也不同。下面進行簡單介紹:

1.Ubuntu

首先,保存現有的規則:

iptables-save > /etc/iptables.rules

然後新建一個bash腳本,並保存到 /etc/network/if-pre-up.d/ 目錄下:

iptables-restore < /etc/iptables.rules

這樣,每次系統重啟後iptables規則都會被自動載入。

!注意:不要嘗試在.bashrc或者.profile中執行以上命令,因為用戶通常不是root,而且這只能在登錄時載入iptables規則。

2.CentOS, RedHat

service iptables save

service iptables stop
service iptables start

查看當前規則:

cat /etc/sysconfig/iptables

五、追加iptables規則

可以使用iptables -A命令追加新規則,其中 -A 表示 Append 。因此, 新的規則將追加到鏈尾。

一般而言,最後一條規則用於丟棄(DROP)所有數據包。如果你已經有這樣的規則了,並且使用 -A 參數添加新規則,那麼就是無用功。

1.語法

iptables -A chain firewall-rule

2.描述規則的基本參數

以下這些規則參數用於描述數據包的協議、源地址、目的地址、允許經過的網路介面,以及如何處理這些數據包。這些描述是對規則的基本描述。

-p 協議(protocol)

-s 源地址(source)

-d 目的地址(destination)

-j 執行目標(jump to target)

-i 輸入介面(input interface)

-o 輸出(out interface)

3.描述規則的擴展參數

對規則有了一個基本描述之後,有時候我們還希望指定埠、TCP標志、ICMP類型等內容。

–sport 源埠(source port)針對 -p tcp 或者 -p udp

–-dport 目的埠(destination port)針對-p tcp 或者 -p udp

-–tcp-flags TCP標志 針對-p tcp

-–icmp-type ICMP類型 針對-p icmp

4.追加規則的完整實例:僅允許SSH服務

本例實現的規則將僅允許SSH數據包通過本地計算機,其他一切連接(包括ping)都將被拒絕。

iptables -F

iptables -A INPUT -i eth0 -p tcp –dport 22 -j ACCEPT

iptables -A INPUT -j DROP

六、更改默認策略

上例的例子僅對接收的數據包過濾,而對於要發送出去的數據包卻沒有任何限制。本節主要介紹如何更改鏈策略,以改變鏈的行為。

1. 默認鏈策略

/!警告 :請勿在遠程連接的伺服器、虛擬機上測試!

當我們使用-L選項驗證當前規則是發現,所有的鏈旁邊都有 policy ACCEPT 標注,這表明當前鏈的默認策略為ACCEPT:

Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp – anywhere anywhere tcp dpt:ssh
DROP all – anywhere anywhere

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

這種情況下,如果沒有明確添加DROP規則,那麼默認情況下將採用ACCEPT策略進行過濾。除非:

a)為以上三個鏈單獨添加DROP規則:

iptables -A INPUT -j DROP
iptables -A OUTPUT -j DROP
iptables -A FORWARD -j DROP

b)更改默認策略:

iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

糟糕!!如果你嚴格按照上一節的例子配置了iptables,並且現在使用的是SSH進行連接的,那麼會話恐怕已經被迫終止了!

為什麼呢?因為我們已經把OUTPUT鏈策略更改為DROP了。此時雖然伺服器能接收數據,但是無法發送數據:

Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp – anywhere anywhere tcp dpt:ssh
DROP all – anywhere anywhere

Chain FORWARD (policy DROP)
target prot opt source destination

Chain OUTPUT (policy DROP)
target prot opt source destination

七、配置應用程序規則

盡管5.4節已經介紹了如何初步限制除SSH以外的其他連接,但是那是在鏈默認策略為ACCEPT的情況下實現的,並且沒有對輸出數據包進行限 制。本節在上一節基礎上,以SSH和HTTP所使用的埠為例,教大家如何在默認鏈策略為DROP的情況下,進行防火牆設置。在這里,我們將引進一種新的 參數-m state,並檢查數據包的狀態欄位。

1.SSH

iptables -A INPUT -i eth0 -p tcp –dport 22 -m state –state NEW,ESTABLISHED -j ACCEPT

iptables -A OUTPUT -o eth0 -p tcp –sport 22 -m state –state ESTABLISHED -j ACCEPT

如果伺服器也需要使用SSH連接其他遠程主機,則還需要增加以下配置:

iptables -A OUTPUT -o eth0 -p tcp –dport 22 -m state –state NEW,ESTABLISHED -j ACCEPT

iptables -A INPUT -i eth0 -p tcp –sport 22 -m state –state ESTABLISHED -j ACCEPT

2.HTTP

HTTP的配置與SSH類似:

iptables -A INPUT -i eth0 -p tcp –dport 80 -m state –state NEW,ESTABLISHED -j ACCEPT

iptables -A OUTPUT -o eth0 -p tcp –sport 80 -m state –state ESTABLISHED -j ACCEPT

3.完整的配置

iptables -F

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

iptables -A INPUT -i eth0 -p tcp –dport 22 -m state –state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp –sport 22 -m state –state ESTABLISHED -j ACCEPT

iptables -A OUTPUT -o eth0 -p tcp –dport 22 -m state –state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp –sport 22 -m state –state ESTABLISHED -j ACCEPT

iptables -A INPUT -i eth0 -p tcp –dport 80 -m state –state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp –sport 80 -m state –state ESTABLISHED -j ACCEPT

References

[1] Linux Firewall Tutorial: IPTables Tables, Chains, Rules Fundamentals

[2] IPTables Flush: Delete / Remove All Rules On RedHat and CentOS Linux

[3] Linux IPTables: How to Add Firewall Rules (With Allow SSH Example)

[4] Linux IPTables: Incoming and Outgoing Rule Examples (SSH and HTTP)

[5] 25 Most Frequently Used Linux IPTables Rules Examples

[6] man 8 iptables

C. linux下的shell是什麼

在計算機科學中,是指「提供用戶使用界面」的軟體,通常指的是命令行界面的解析器。一般來說,shell是指操作系統中,提供訪問內核所提供之服務的程序。

D. Linux學習書籍求推薦

Linux學習書籍求推薦
1、《Linux與Unix Shell 編程指南》
C語言基礎
1、《C Primer Plus,5th Edition》【美】Stephen Prata著
2、《The C Programming Language, 2nd Edition》【美】Brian W. Kernighan David M. Rithie(K & R)著
3、《Advanced Programming in the UNIX Environment,2nd Edition》(APUE)
4、《嵌入式Linux應用程序開發詳解》
Linux內核
1、《深入理解Linux內核》(第三版)
2、《Linux內核源代碼情景分析》毛德操 胡希明著
研發方向
1、《UNIX Network Programming》(UNP)
2、《TCP/IP詳解》
3、《Linux內核編程》
4、《Linux設備驅動開發》(LDD)
硬體基礎
1、《ARM體系結構與編程》杜春雷著
2、S3C2410 Datasheet
英語基礎
1、《計算機與通信專業英語》
系統教程
1、《嵌入式系統――體系結構、編程與設計》
2、《嵌入式系統――採用公開源代碼和StrongARM/Xscale處理器》毛德操 胡希明著
3、《Building Embedded Linux Systems》
理論基礎
1、《演算法導論》
2、《數據結構(C語言版)》
3、《計算機組織與體系結構?性能分析》
4、《深入理解計算機系統》【美】Randal E. Bryant David O』Hallaron著
5、《操作系統:精髓與設計原理》
6、《編譯原理》
7、《數據通信與計算機網路》
8、《數據壓縮原理與應用》
入門篇
《LINUX權威指南》書不錯,寫的很全面也比較廣,涉及的不深,做為入門書籍不錯,可以比較全面的了解linux 。另外比較熱門的也可以看看《鳥哥的私房菜》等書,偏管理類的書。如果想做server方向的可以找來看看。
驅動 篇
《LINUX設備驅動程序 》就是網上說的「LDD」,經典之作,必備書籍。國產經典《Linux驅動詳細解》也是一本非常不錯的書,很實用,書中源代碼分析比較多,基於2440的,對linux外圍驅動有很全面的講解
內核篇
浙江大學的《LINUX內核源代碼情景分析》,外國鬼子的《萊昂氏UNIX源代碼分析》還有《深入理解linux內核》都是出名的經典巨作。另外趙 炯的《LINUX內核完全剖析–基於0.12內核》也非常不錯,對內核代碼進行了詳細的注釋,非常有助於對內核的理解和代碼的分析。
shell篇
《LINUX與UNIX Shell編程指南》
應用 編程
不用說了肯定是《unix環境高級編程》被稱為unix編程的聖經。
TCP/IP篇
《TCP/IP詳解》作者W.Richard Stevens也是《unix環境高級編程》的作者,牛人出的書沒有一本不是經典的。但是英年早逝,默哀一下。
c語言
《The C Programming Language》正是作者造出來的c語言,書能垃圾就怪了
《c和指針》和《c缺陷和陷阱》兩本必備。包含了c語言最容易出錯的地方,加深c語言功力的好材料。
關於演算法
《演算法導論》
1 熟悉linux基本環境 >>> 《鳥哥的私訪菜》《unix初級教程》 《linux編程寶典》(市面上無,圖書館有), 等等。
2 熟悉操作系統的基礎知識 >>> 《現代操作系統》 《操作系統概念》
3 熟悉系統編程 >>> 《unix環境高級編程第二版》《unix操作系統設計與實現》
4 內核 按先後順序: 《 linux內核設計與實現》 《linux設備驅動程序》 《深入理解 linux內核》 《linux內核源代碼情景分析》 《深入理解linux虛擬內存系統》
5 其他一些書籍: 《freebsd操作系統設計與實現》 《solaris內核結構》 《unix高級教程:系統技術內幕》 《現代體系結構的unix系統:內核程序員的smp與cache技術》 《保護方式下的80386及其編程》 (後3本市面上沒了,大學圖書館里一般都有》 《Intel64 and IA-32 Arichitectures Software Developer』s Manual》
6 其實內核玩深了,體系和編譯也要學好 《計算機體系結構:量化研究方法》 《編譯原理》(龍書)

Linux編程推薦書籍一覽表
shell 編程
《LINUX與UNIX SHELL編程指南》
BASH寶典:
Advanced Bash Scripting Guide (如果你使用的是 GNU/Debian 系統,可以用 apt-get install abs-guide 安裝該文檔)
BASH Programming – Introction HOW-TO
Bash Man

用戶級編程書籍:
Advanced Programming in the UNIX Environment(中文版《UNIX環境高級編程》第二版) 作者 W.Richard
Stevens/尤晉元等
GNU/Linux編程指南 作者 Kurt Wall
Linux 程序設計權威指南 作者 於明儉、陳向陽、方漢
《The Art of Unix Programming》作者 E.S.R
Computer Systems A Programmer』s Perspective
(中文名)《深入理解計算機系統(修訂版)》
《Unix Systems Programming》(中文版《UNIX系統編程》)作者: (美)KAY
A.ROBBINS, STEVE ROBBINS 譯者:陳涓 趙振平
網路編程:
Unix Network Programming V1 & V2,Unix網路編程卷1、2 作者 W.Richard Stevens
《unix網路編程》
XWindow編程
Definitive Guides to the X WindowSystem 作者 Dan Heller, Paula M. Ferguson

內核源代碼閱讀(結合源代碼)和編程
(入門)
《邊干邊學Linux內核指導》
(高級)
《Linux Kernel Development》
《Linux內核源代碼情景分析》
《深入分析Linux內核源代碼》 陳莉君
《 Understanding Linux Network Internals 》即《 深入理解Linux網路內幕(英文影印版)》Christian Benvenuti
內核模塊編程
《The Linux Kernel Mole Programming Guide》
Linux設備驅動編程
Linux設備驅動程序/Linux Device
Drivers 作者 Alessandro Ruibini
多線程編程
《多線程編程指南》

閱讀全文

與linuxandunixshell相關的資料

熱點內容
實現打開文件 瀏覽:572
s7數據開關在哪裡 瀏覽:361
gvim如何調出文件目錄 瀏覽:587
藏建通在什麼網站下載 瀏覽:323
手機qq怎麼改群的名字 瀏覽:574
美術類的論文主要發表在哪個網站 瀏覽:8
nodejs6await作用域 瀏覽:386
editplus調試js文件 瀏覽:827
電腦數據的u是什麼意思 瀏覽:718
電子照片怎麼弄成壓縮文件 瀏覽:285
蘋果推送電信運營商配置文件 瀏覽:748
受精24天數據在多少 瀏覽:502
計算機網路第二章習題 瀏覽:821
怎麼把pdf文件里的字復制到word 瀏覽:255
健走app哪個軌跡最准 瀏覽:650
win10手機系統轉安卓系統軟體 瀏覽:313
哪個銀行app能代繳違停罰款 瀏覽:555
蘋果導出微信文件 瀏覽:518
win10寬頻撥號連接720 瀏覽:219
數控車床步進編程怎麼調整參數 瀏覽:916

友情鏈接