批量備案查詢腳本linux
前言
本文主要給大家介紹了關於Linux shell用sed批量更改文件名的相關內容,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹吧。
示例
去除特定字元
目標:將 2017-01-01.jpg、2018-01-01.jpg 改為 20170101.jpg、20180101.jpg
方法:將所有 - 替換為空
for file in `ls | grep .jpg`
do
newfile=`echo $file | sed 's/-//g'`
mv $file $newfile
done
這里使用sed進行標准輸出的字元串替換,其通用格式如下:
stdout | sed 's/pattern/replace/'
上述示例中,在末尾添加g用於替換所有匹配項,而不僅僅替換第一個匹配項。
中間插入字元
目標:將 book01.txt、paper02.txt 改為 book-01.txt、paper-02.txt
方法:用分組匹配分別獲取待插入位置兩側的字元串,再通過反向引用實現替換
for file in `ls | grep .txt`
do
newfile=`echo $file | sed 's/\([a-z]\+\)\([0-9]\+\)/\1-\2/'`
mv $file $newfile
done
分析
上述示例首先通過 ls 和 grep 命令得到待改名的文件列表,然後用 sed 命令進行字元串的替換,最後再使用 mv 命令來完成文件名的更改。
獲取待改名文件列表的方法有很多,可以通過 find 命令,也可以直接給出字元串,我們將在下文中提到。
注意 for 循環後面的 ls | grep .txt,這條命令用兩個反單引號括了起來,與 $(ls | grep .txt) 的作用相同,被包圍的字元串會被當作命令執行,然後返回字元串結果。
文件名包含空格的解決方法
我們可以直接將文件列表寫到 for 循環中,而不是通過命令來得到,例如:
for file in "file1 file2 file3"
do
...
done
可以看到 for 循環是通過空格來分割字元串,因此如果待更改的文件名中包含空格的話,就會被拆分成多個文件名,從而出錯。
要解決這個問題,我們可以將 IFS(內部欄位分隔符)設置為換行符 \n,這樣一來,for 循環就會按行來獲取變數的值,確保每次獲取的確實是一個完整的文件名。
設置 IFS 變數的命令需要放在 for 循環之前:
IFS=$'\n'
for file in `ls`
do
...
done
也可以直接使用 while read 命令一次讀取一行到變數 file 中:
ls | grep "*.txt" | while read file
do
...
done
使用 find 獲取文件列表
之前的示例中,我們是通過 ls 命令來獲取文件列表。該命令只能獲取某個目錄的文件,而且沒法進行多種條件的篩選。
而一說到文件的查找,不得不提到功能強大的 find 命令。該命令可以在多個層次的目錄中查找文件,並能夠設定諸如創建時間、文件大小、所有者等多種條件,查找起文件來特別方便靈活。
用 find 命令來獲取文件列表,再用 sed 命令配合正則表達式來修改文件名,這兩個命令的結合幾乎能完成所有常見的批量改名任務。
例如,將所有大於1M,且後綴為txt或jpg的文件,由形如 book_20170101.txt、image_20170101.jpg 的文件改名為 20170101-book.txt、20170101-image.jpg,代碼如下:
for file in `find . -size +1M -name "*_*.txt" -o -name "*_*.jpg"`
do
newfile=`echo $file | sed 's/\([a-z]\+\)_\([0-9]\+\)./\2-\1./'`
mv $file $newfile
done
⑵ 如何在Linux中通過命令查看域名對應的IP
實際工作或者維護過程中常常需要通過域名反查下其對應的IP地址。解決方法有多種,既可以通過網上提供的域名反查IP查詢工具查詢,也可以在 Linux系統 中通過命令進行查詢。
本教程主要講解如何在Linux系統中通過命令查看域名對應的IP地址,主要講解以下5個命令:
dig命令它是一個功能強大且靈活的命令行工具,用於查詢 DNS 名稱伺服器。它執行 DNS 查詢,並顯示來自查詢的名稱伺服器的返回信息。大多數 DNS 管理員使用 dig 命令來解決 DNS 問題,因為它靈活、易用且輸出清晰。
如何使用 dig 命令查找域的 IP 地址呢?看示例:
輸出:
當然如果你需要一次查詢多個域名的IP地址,可以通過將多個域名信息放到一個文本文件中,每行一個,然後編寫shell腳本進行讀取文件然後循環批量查詢輸出。
shell腳本命令類似如下:
host 命令可用於執行 DNS 查詢。它通常用於將名稱轉換為 IP 地址,反之亦然。如果未提供任何參數或選項, host 將列印它的命令行參數和選項摘要。
輸出:
同理,可以通過編寫shell腳本實現批量查詢,示例如下:
nslookup 命令是一個用於查詢互聯網域名伺服器(DNS)的程序。
nslookup 有兩種模式,分別是互動式和非互動式。交互模式允許用戶查詢名稱伺服器以獲取有關各種主機和域的信息,或列印域中的主機列表。非交互模式用於僅列印主機或域的名稱和請求的信息。
它是一個網路管理工具,可以幫助診斷和解決 DNS 相關問題。命令示例如下:
輸出:
同理,使用以下 bash 腳本查找多個域的 IP 地址
fping 命令是類似 ping 之類的程序,它使用互聯網控制消息協議(ICMP)echo 請求來確定目標主機是否響應。
fping 與 ping 不同,因為它允許用戶並行 ping 任意數量的主機。另外,它可以從文本文件輸入主機。
fping 發送 ICMP echo 請求,並以循環方式移到下一個目標,並且不等到目標主機做出響應。
如果目標主機答復,那麼將其標記為活動主機並從要檢查的目標列表中刪除;如果目標在特定時間限制和/或重試限制內未響應,那麼將其指定為不可訪問。
fping命令程序並不默認安裝在 Linux發行版 中,一般需要進行安裝,常見的發行版安裝命令如下:
Ubuntu / Debian / LinuxMint
Fedora / CentOS / RHEL
fping默認使用示例:
輸出:
更多關於fping的使用方法可以通過在終端中鍵入 man fping 來學習。
ping 命令(數據包互聯網抓手Packet Internet Groper)是一個網路程序,用於測試 Internet 協議(IP)網路上主機的可用性/連接性。
ping命令通過向目標主機發送互聯網控制消息協議(ICMP)Echo 請求數據包並等待 ICMP Echo 應答來驗證主機的可用性。
它基於發送的數據包、接收的數據包、丟失的數據包,通常包含最小/平均/最大時間來匯總統計結果。
命令示例:
輸出:
我們可以看到輸出內容中起對應的IP地址,如果需要過濾輸出,增加更多相應的命令處理:
輸出:
以上內容為在 Linux系統 中使用5個命令來獲取域名對應的IP地址。建議你可以在自己的伺服器或者自己的Linux同上進行嘗試,也可以通過編寫shell腳本進行批量處理或通過相應的命令對輸出進行處理輸出自己想要的內容。
⑶ python怎麼批量查詢域名備案信息
1.把要反查的ip地址寫在c:\ip.txt裡面,每個ip或者域名一行
2.python reverse_ip.py
3.用Excel打開c:\result.csv,結果就都在裡面了!
⑷ 幫我修改一個linux的shell腳本:根據文件名批量搜索並復制文件
while read line; do if [ -f "/sample/$line" ]; then echo "file exists: $line"; cp "/sample/$line" /new/; fi; done < file.txt
⑸ Linux對應的安裝腳本怎樣查
在Linux 操作系統中,有一個系統軟體包,它的功能類似於Windows裡面的「添加/刪除程序」,但是功能又比「添加/刪除程序」強很多,它就是 Red Hat Package Manager(簡稱RPM)。此工具包最先是由Red Hat公司推出的,後來被其他Linux開發商所借用。由於它為Linux使用者省去了很多時間,所以被廣泛應用於在Linux下安裝、刪除軟體。下面就給大家介紹一下它的具體使用方法。
1.我們得到一個新軟體,在安裝之前,一般都要先查看一下這個軟體包里有什麼內容,假設這個文件是:Linux-1.4-6.i368.rpm,我們可以用這條命令查看:
rpm -qpi Linux-1.4-6.i368.rpm
系統將會列出這個軟體包的詳細資料,包括含有多少個文件、各文件名稱、文件大小、創建時間、編譯日期等信息。
2.上面列出的所有文件在安裝時不一定全部安裝,就像Windows下程序的安裝方式分為典型、完全、自定義一樣,Linux也會讓你選擇安裝方式,此時我們可以用下面這條命令查看軟體包將會在系統里安裝哪些部分,以方便我們的選擇:
rpm -qpl Linux-1.4-6.i368.rpm
3. 選擇安裝方式後,開始安裝。我們可以用rpm-ivh Linux-1.4-6.i368.rpm命令安裝此軟體。在安裝過程中,若系統提示此軟體已安裝過或因其他原因無法繼續安裝,但若我們確實想執行安裝命令,可以在 -ivh後加一參數「-replacepkgs」:
rpm -ivh -replacepkgs Linux-1.4-6.i368.rpm
4.有時我們卸載某個安裝過的軟體,只需執行rpm-e <文件名>;命令即可。
5.對低版本軟體進行升級是提高其功能的好辦法,這樣可以省去我們卸載後再安裝新軟體的麻煩,要升級某個軟體,只須執行如下命令:rpm -uvh <文件名>;,注意:此時的文件名必須是要升級軟體的升級補丁
6. 另外一個安裝軟體的方法可謂是Linux的獨到之處,同時也是RMP強大功能的一個表現:通過ftp站點直接在線安裝軟體。當找到含有你所需軟體的站點並與此網站連接後,執行下面的命令即可實現在線安裝,譬如在線安裝Linux-1.4-6.i368.rpm,可以用命令:
rpm -i ftp://ftp.pht.com/pub/linux/redhat/...-1.4-6.i368.rpm
7. 在我們使用電腦過程中,難免會有誤操作,若我們誤刪了幾個文件而影響了系統的性能時,怎樣查找到底少了哪些文件呢?RPM軟體包提供了一個查找損壞文件的功能,執行此命令:rpm -Va即可,Linux將為你列出所有損壞的文件。你可以通過Linux的安裝光碟進行修復。
8.Linux系統中文件繁多,在使用過程中,難免會碰到我們不認識的文件,在Windows下我們可以用「開始/查找」菜單快速判斷某個文件屬於哪個文件夾,在Linux中,下面這條命令行可以幫助我們快速判定某個文件屬於哪個軟體包:
rpm -qf <文件名>;
9.當每個軟體包安裝在Linux系統後,安裝文件都會到RPM資料庫中「報到」,所以,我們要查詢某個已安裝軟體的屬性時,只需到此資料庫中查找即可。注意:此時的查詢命令不同於1和8介紹的查詢,這種方法只適用於已安裝過的軟體包!命令格式:
rpm -參數<文件名>;
⑹ 求一個linux伺服器巡檢腳本,50多台伺服器,結果要做成一個excel表格,每天手動開始執行即可!
你可以在每台伺服器上面放同一個腳本。
這個linux腳本加入cron,這個腳本每天定時把df -k free -m uptime 這三項的結果保存到文本文件裡面,比如uptime可以保存到uptime_20140112.txt,以此類推。
然後腳本把這些文件ftp到一個單獨的伺服器上面,比如192.168.1.100,這個伺服器可以是windows。
然後寫個程序讀當天或者幾天的txt文件,然後輸出到excel。可以用你熟悉的語言來寫,應該不難。
