liunx必知必會(2)

一.SSH免密登錄配置shell

一、相關概念
SSH 爲 Secure Shell(安全外殼協議) 的縮寫。
不少ftp、pop和telnet在本質上都是不安全的,由於它們在網絡上用明文傳送口令和數據,別有用心的人很是容易就能夠截獲這些口令和數據。而SSH就是專爲遠程登陸會話和其餘網絡服務提供安全性的協議。apache

SSH的具體實現是由客戶端和服務端的軟件組成的
服務端是一個守護進程(sshd),他在後臺運行並響應來自客戶端的鏈接請求。
客戶端包含ssh程序以及像scp(遠程拷貝)、slogin(遠程登錄)、sftp(安全文件傳輸)等其餘的應用程序。安全

2 密鑰登錄方式配置
假如 A 要登錄 B
在A上操做:
1/ 首先生成密鑰對
ssh-keygen (提示時,直接回車便可)
2/ 再將A本身的公鑰拷貝並追加到B的受權列表文件authorized_keys中
ssh-copy-id Bbash

二.網絡管理服務器

1 主機名配置網絡

  • 1/ 查看主機名
    hostname
  • 2/ 修改主機名(重啓後無效)
    hostname hadoopssh

  • 3/ 修改主機名(重啓後永久生效)
    vi /ect/sysconfig/networktcp

2 IP地址配置
修改IP地址工具

  • 1/ 方式一:setup
    用root輸入setup命令,進入交互式修改界面oop

  • 2/ 方式二:修改配置文件(重啓後永久生效)
    vi /etc/sysconfig/network-scripts/ifcfg-eth0

  • 3/ 方式三:ifconfig命令
    (重啓後無效)
    ifconfig eth0 192.168.12.22

3 域名映射
/etc/hosts文件 用於在經過主機名進行訪問時作ip地址解析之用
因此,你想訪問一個什麼樣的主機名,就須要把這個主機名和它對應的ip地址配置在/etc/hosts文件中:
vi /etc/hosts

4 網絡服務管理

  • 1/ 後臺服務管理
    service network status 查看指定服務的狀態
    service network stop 中止指定服務
    service network start 啓動指定服務
    service network restart 重啓指定服務
    service --status-all 查看系統中全部的後臺服務

  • 2/ 設置後臺服務的自啓配置
    chkconfig 查看全部服務器自啓配置
    chkconfig iptables off 關掉指定服務的自動啓動
    chkconfig iptables on 開啓指定服務的自動啓動

5 系統中網絡進程的端口監聽狀況

netstat -nltp

3、防火牆配置

查看防火牆狀態
service iptables status
關閉防火牆
service iptables stop
啓動防火牆
service iptables start
禁止防火牆自啓
chkconfig iptables off

一、列出iptables規則
iptables -L -n
列出iptables規則並顯示規則編號
iptables -L -n --line-numbers

二、列出iptables nat表規則(默認是filter表)
iptables -L -n -t nat

三、清除默認規則(注意默認是filter表,若是對nat表操做要加-t nat)
清除全部規則
iptables -F

重啓iptables發現規則依然存在,由於沒有保存
service iptables restart

保存配置
service iptables save

四、禁止ssh登錄(若果服務器在機房,必定要當心)
iptables -A INPUT -p tcp --dport 22 -j DROP

刪除規則
iptables -D INPUT -p tcp --dport 22 -j DROP

加入一條INPUT規則開放80端口
iptables -I INPUT -p tcp --dport 80 -j ACCEPT

4、高級文本編輯

1.cut命令

cut語法

[root@www ~]# cut -d'分隔字符' -f fields ## 用於有特定分隔字符

[root@www ~]# cut -c 字符區間 ## 用於排列整齊的信息

選項與參數:
-d:後面接分隔字符。與 -f 一塊兒使用;
-f:依據 -d 的分隔字符將一段信息分割成爲數段,用 -f 取出第幾段的意思;
-c:以字符 (characters) 的單位取出固定字符區間;

PATH 變量以下
[root@www ~]# echo $PATH
/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin:/usr/games
1 | 2 | 3 | 4 | 5 | 6 | 7

將 PATH 變量取出,找出第五個路徑。
echo $PATH | cut -d':' -f 5
/usr/local/bin

將 PATH 變量取出,找出第三和第五個路徑。
echo $PATH | cut -d ':' -f 3,5
/sbin:/usr/local/bin

將 PATH 變量取出,找出第三到最後一個路徑。
echo $PATH | cut -d ':' -f 3-
/sbin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin:/usr/games

將 PATH 變量取出,找出第一到第三個路徑。
echo $PATH | cut -d ':' -f 1-3
/bin:/usr/bin:/sbin:

將 PATH 變量取出,找出第一到第三,還有第五個路徑。
echo $PATH | cut -d ':' -f 1-3,5
/bin:/usr/bin:/sbin:/usr/local/bin

實用例子:只顯示/etc/passwd的用戶和shell
cat /etc/passwd | cut -d ':' -f 1,7
root:/bin/bash
daemon:/bin/sh
bin:/bin/sh

2.sed命令

  • 1/ 刪除:d命令

    $ sed '2d' example -----刪除example文件的第二行。
    $ sed '2,$d' example -----刪除example文件的第二行到末尾全部行。
    $ sed '$d' example -----刪除example文件的最後一行。
    $ sed '/test/'d example -----刪除example文件全部包含test的行。

  • 2/ 替換:s命令

    $ sed 's/test/mytest/g' example
    在整行範圍內把test替換爲mytest。若是沒有g標記,則只有每行第一個匹配的test被替換成mytest。

    $ sed -n 's/^test/mytest/p' example
    (-n)選項和p標誌一塊兒使用表示只打印那些發生替換的行。也就是說,若是某一行開頭的test被替換成mytest,就打印它。

    $ sed 's/^192.168.0.1/&localhost/' example
    &符號表示追加一個串到找到的串後。全部以192.168.0.1開頭的行都會被替換成它自已加 localhost,變成192.168.0.1localhost。

3.awk命令

awk是一個強大的文本分析工具,相對於grep的查找,sed的編輯,awk在其對數據分析並生成報告時,顯得尤其強大。簡單來講awk就是把文件逐行的讀入,以空格爲默認分隔符將每行切片,切開的部分再進行各類分析處理。

若是隻是顯示最近登陸的5個賬號
last -n 5 | awk '{print $1}'

root

root

root

dmtsai

root

awk工做流程是這樣的:讀入有'\n'換行符分割的一條記錄,而後將記錄按指定的域分隔符劃分域,填充域,$0則表示全部域,$1表示第一個域,$n表示第n個域。默認域分隔符是"空白鍵" 或 "[tab]鍵",因此$1表示登陸用戶,$3表示登陸用戶ip,以此類推。

若是隻是顯示/etc/passwd的帳戶

cat /etc/passwd |awk -F ':' '{print $1}'

root

daemon

bin

sys

這種是awk+action的示例,每行都會執行action{print $1}。
-F指定域分隔符爲':'

若是隻是顯示/etc/passwd的帳戶和帳戶對應的shell,而帳戶與shell之間以tab鍵分割

cat /etc/passwd |awk -F ':' '{print $1"\t"$7}'

root /bin/bash

daemon /bin/sh

bin /bin/sh

sys /bin/sh

若是隻是顯示/etc/passwd的帳戶和帳戶對應的shell,而帳戶與shell之間以逗號分割,並且在全部行添加列名name,shell,在最後一行添加"blue,/bin/nosh"。

cat /etc/passwd |awk -F ':' 'BEGIN {print "name,shell"} {print $1","$7} END {print "blue,/bin/nosh"}'

name,shell

root,/bin/bash

daemon,/bin/sh

bin,/bin/sh

sys,/bin/sh

....

blue,/bin/nosh

awk工做流程是這樣的:先執行BEGING,而後讀取文件,讀入有/n換行符分割的一條記錄,而後將記錄按指定的域分隔符劃分域,填充域,$0則表示全部域,$1表示第一個域,$n表示第n個域,隨後開始執行模式所對應的動做action。接着開始讀入第二條記錄······直到全部的記錄都讀完,最後執行END操做。

五. crontab配置

經過crontab 命令,咱們能夠在固定的間隔時間執行指定的系統指令或 shell script腳本。時間間隔的單位能夠是分鐘、小時、日、月、周及以上的任意組合。這個命令很是適合週期性的日誌分析或數據備份等工做。

二、安裝crontab

yum install crontabs

服務操做說明:

service crond start  ## 啓動服務
service crond stop   ## 關閉服務
service crond restart ## 重啓服務
service crond reload  ## 從新載入配置

查看crontab服務狀態:

service crond status

手動啓動crontab服務:

service crond start

查看crontab服務是否已設置爲開機啓動,執行命令:

chkconfig --list

加入開機自動啓動:

chkconfig  --level 35 crond on

三、命令格式

crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]

參數說明:

-u user:用來設定某個用戶的crontab服務,例如,「-u ixdba」表示設定ixdba用戶的crontab服務,此參數通常有root用戶來運行。
file:file是命令文件的名字,表示將file作爲crontab的任務列表文件並載入crontab。

-e:編輯某個用戶的crontab文件內容。若是不指定用戶,則表示編輯當前用戶的crontab文件。

-l:顯示某個用戶的crontab文件內容,若是不指定用戶,則表示顯示當前用戶的crontab文件內容。

-r:刪除定時任務配置,從/var/spool/cron目錄中刪除某個用戶的crontab文件,若是不指定用戶,則默認刪除當前用戶的crontab文件。
-i:在刪除用戶的crontab文件時給確認提示。

命令示例:

crontab file [-u user] ## 用指定的文件替代目前的crontab。

必掌握:

crontab -l [-u user] ## 列出用戶目前的crontab.

crontab -e [-u user] ## 編輯用戶目前的crontab.

四、調度配置

4.1 配置說明

基本格式 :

          command
  
分  時  日  月  周  命令

第1列表示分鐘1~59 每分鐘用或者 /1表示

第2列表示小時0~23(0表示0點) 7-9表示:8點到10點之間

第3列表示日期1~31

第4列表示月份1~12

第5列標識號星期0~6(0表示星期天)

第6列要運行的命令

4.2 配置示例

/1 * * * date >> /root/date.txt

上面的例子表示每分鐘執行一次date命令

30 21 * * * /usr/local/etc/rc.d/httpd restart

上面的例子表示每晚的21:30重啓apache。

45 4 1,10,22 * * /usr/local/etc/rc.d/httpd restart

上面的例子表示每個月一、十、22日的4 : 45重啓apache。

10 1 * * 6,0 /usr/local/etc/rc.d/httpd restart

上面的例子表示每週6、週日的1 : 10重啓apache。

0,30 18-23 * * * /usr/local/etc/rc.d/httpd restart

上面的例子表示在天天18 : 00至23 : 00之間每隔30分鐘重啓apache。

0 23 * * 6 /usr/local/etc/rc.d/httpd restart

上面的例子表示每星期六的11 : 00 pm重啓apache。

  • /1 * * /usr/local/etc/rc.d/httpd restart
  • 上面的例子每一小時重啓apache

  • 23-7/1 * * * /usr/local/etc/rc.d/httpd restart
  • 上面的例子晚上11點到早上7點之間,每隔一小時重啓apache

0 11 4 * mon-wed /usr/local/etc/rc.d/httpd restart

上面的例子每個月的4號與每週一到週三的11點重啓apache

0 4 1 jan * /usr/local/etc/rc.d/httpd restart

上面的例子一月一號的4點重啓apache

相關文章
相關標籤/搜索