當前位置:首頁 » 網頁前端 » shell批量互信腳本
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

shell批量互信腳本

發布時間: 2022-04-29 03:17:33

❶ 如何在shell腳本里使用sftp批量傳送文件

如何在shell腳本里使用sftp批量傳送文件

主要步驟如下:

1.為運行shell腳本的本地用戶生成密鑰對
2.將其中的公鑰分發到sftp欲登錄的遠程伺服器上
3.編寫並以上面的本地用戶運行shell腳本

一.生成密鑰對

在shell腳本中使用sftp時必須用到密鑰對(公鑰和私鑰).可使用下列方式生成(SSH 2.X版
本),這里本地用戶記為:local_user:

$ ssh-keygen –d

屏幕提示:

Generating public/private dsa key pair.

Enter file in which to save the key (/home/local_user/.ssh/id_dsa):
# 按回車保存為: /home/local_user/.ssh/id_dsa,即當前用戶local_user的私鑰

Enter passphrase (empty for no passphrase):
# 按回車,表示讀取密鑰時不需要密鑰的密碼

Enter same passphrase again:
# 確認密鑰的密碼,必須和上面的輸入相同

Your identification has been saved in /home/local_user/.ssh/id_dsa.
# 私鑰保存信息

Your public key has been saved in /home/local_user/.ssh/id_dsa.pub.
# 公鑰保存信息

The key fingerprint is:
ec:41:e8:08:38:0b:f8:1e:bc:92:98:32:fc:d7:69:7d ...
# 密鑰指紋

二.分發公鑰

為了使用密鑰,必須將公鑰分發到欲登錄的遠程伺服器上,這里遠程伺服器記為remote_hos
t,欲登錄的遠程用戶記為remote_user

1.公鑰到欲登錄的遠程伺服器的遠程用戶的家目錄下,例如:

id_dsa.pub到remote_host:/home/remote_user/.ssh/

若目錄/home/remote_user/.ssh/不存在,請先創建之.

2.將來的公鑰文件改名為authorized_keys

3.修改公鑰文件的訪問許可權

chmod 644 authorized_keys

三.示例

目標:

從遠程伺服器remote_host:/home/remote_user/data/
傳送下列文件到本地計算機的當前目錄: /home/local_user/data/:

20050201
20050202
20050203
20050204
20050205

方式1: 批模式

sftp提供了一個選項-b,用於集中存放sftp命令(該選項主要用於非交互模式的sftp).因此
對於上面的目標,可以生成如下的命令文件:

cd /home/remote_user/data/
lcd /home/local_user/data/
-get 20050201 .
-get 20050202 .
-get 20050203 .
-get 20050204 .
-get 20050205 .
quit

這里存為: sftp_cmds.txt

說明: get命令前加一個"-"以防止其執行錯誤時sftp執行過程被終止.

以下為腳本示例:

#!/bin/sh
sftp -b ./sftp_cmds.txt remote_user@remote_host

方式二:

#!/bin/sh
sftp remote_user@remote_host << EOF
cd /home/remote_user/data/
lcd /home/local_user/data/
-get 20050201 .
-get 20050202 .
-get 20050203 .
-get 20050204 .
-get 20050205 .
quit
EOF

❷ shell中怎麼批量執行命令。

將要執行的命令全部寫入一個文件(俗稱腳本文件),然後執行腳本文件即可。
注意:假設腳本文件名為test.sh(後綴不必要,只是為了清楚表明是腳本文件),那麼在執行腳本文件前,要用 chmod +x test.sh 賦予其可執行許可權。然後才能像執行命令那樣執行腳本。
--------------------
多台伺服器跟一台伺服器的操作類似,通信協議和操作方式都是相同的,只是IP地址不同。
所以只要寫一個循環,
for ip in $ip1 $ip2 $ip3
do
使用 $ip 做伺服器操作
done

❸ shell腳本 如何批量執行多個腳本 不等結果返回

php是要web伺服器才能運行吧

❹ 如何使windows下的bat文件調用linux下的shell腳本的方法

參考網站:http://www.07net01.com/linux/_412980_1371458611.html

第一步:規劃
在連通bat和shell之前要先把windows和windows之間的關系,linux和linux之間的關系打通。
windows之間用net use 進行連接,linux之間使用ssh進行連接

第二步:打地基
PS:以下所有運行環境都是在超級管理員下運行,省的跳出一些亂七八糟的東西阻礙造橋大計。
windows間可用net use進行測試,查看是否能相連的。

例:net use \\192.168.1.124\ipc$ "123456" /user:"administrator"
net use \\ip地址\ipc$ "密碼"/user:"用戶名"

這個密碼和用戶名都是要連接過去那台機子的密碼和用戶名的
若出現以下提示就證明連接成功

當然萬事都是沒有這么順利的。。。
例如。。。

像這么些亂七八糟的錯誤基本就是網路不通啊,ip地址有誤,用戶名密碼有誤之類造成的。。。
所以得多多利用度娘、谷姐之類的神器進行解決。
或許有時候可能還會用到以下一些命令

net use 來查看哪些是存在的
net use \\192.168.1.210\ipc$ /del 用來刪除連接

windows的連接方式就是如此。
在你的客戶機上用同樣的方法去測試需要加入批量關機大軍的windows伺服器。

linux間通信使用ssh方式來進行。
先進行配置linux間ssh雙機互信機制,這樣就可以使兩機之間通信不需要輸入密碼進行訪問,將密碼全部隱藏起來,這樣也起到了安全作用。
關於ssh雙機信任機制可以我之前的博客上查看
http://alwaysyunwei.blog.51cto.com/3224143/1222601

第三部:架橋
現在linux機器上寫一個shell腳本進行批量關機
其中ip.txt存放要批量關機的linux機器ip
當然shutdown_boot.sh應該像下面這樣寫,而不是圖片中的那樣,圖片中的內容只是我做測試用的。
#!/bin/sh
for ip in `cat ip.txt`
do
ssh $ip <<EOF
echo "{$ip} shutdown now..."
ifconfig
init 0
EOF
done

ssh 192.168.1.216 -p10088<<EOF
echo "shutdown 192.168.1.216 now...."
ifconfig
init 0
EOF

因為在我的正式環境中216這台機子SSH埠比較特殊,所以單獨剝離出來。

橋的一端已搭好,現在搭建另一端,windows下bat腳本來進行windows批量關機
建立一個shutdown.bat文件
寫入以下內容

#批量關閉windows機器

net use \\192.168.1.249\ipc$ "12345" /user:"administrator"
shutdown -s -f -t 20 -m \\192.168.1.249

net use \\192.168.1.254\ipc$ "123456" /user:"administrator"
shutdown -s -f -t 20 -m \\192.168.1.254

net use \\192.168.1.210\ipc$ "123456" /user:"administrator"
shutdown -s -f -t 20 -m \\192.168.1.210

橋的另一端也搭好了

最後一步就是把兩端連起來
這時候就要請出我們的putty工具
可谷姐、度娘下載一個

第一次要進行手動連接

用這個工具進行連接shell腳本所在的那台機子

填上IP和埠即可。
然後進行連接,會提示輸入用戶名和密碼,登入完後就出現sshhostkeys文件夾

然後把shutdown.bat文件放入到跟這文件夾同級目錄下。
在bat文件添加以下內容

#批量關閉linux機器

D:
cd puttyfile_0.62cn
putty.exe -ssh -pw 123456-m test.sh [email protected]

簡單說下這個語法
putty.ext -ssh -pw 密碼 -m 要在linux執行的文件 用戶名@IP地址

其中test.sh也是放在sshhostkeys同級目錄下,裡面寫上你要向linux執行的命令

#!/bin/sh

cd /opt/script/shell
#mkdir /tmp/test061502
sh shutdown_boot.sh
#mkdir test06170

最終的結果就是以下內容了

shutdown.bat

test.sh

這樣就大功告成

第四步:後期工作
按照這個流程可以完成最初的要求,但這樣會存在很多的安全問題,密碼明碼就是一個問題,這個還有待研究看要怎樣處理。
另外一個,在這個bat文件中最好加一個時間判斷,比如晚上6點後點擊執行這個bat文件可以正常運行,其他時間段點擊時則出現告警,以防誤操作導致關機。

還有其他的等等一些內容需要完善,待以後想到了在 進行補充。

❺ 求助,shell 腳本批量數據的處理

沒太聽懂你的意思,如果用bash來寫,可以通過數組來控制,比如
數組TraceNum[1] 和對應的PackNuo[1] 數組里邊的下標可以用變數來控制。
不知道是不是你想要的效果,具體還是沒聽懂你想幹嘛。

❻ centos shell腳本(批量操作)

#!/bin/bash

HOSTNAME="192.168.111.84" #資料庫信息
PORT="3306"
USERNAME="root"
PASSWORD=""

DBNAME="test_db_test" #資料庫名稱
TABLENAME="test_table_test" #資料庫中表的名稱

❼ linux shell腳本 批處理

  1. 新建一個文件,名字為test(自己定義的名字)
    nano test.sh

  2. 在裡面編寫腳本
    程序必須以下面的行開始(必須方在文件的第一行):
    #!/bin/sh
    符號#!用來告訴系統它後面的參數是用來執行該文件的程序。在這個例子中使用/bin/sh來執行程序。
    (能寫一些shell普通命令,命令用分號隔開)
    例子:
    #! /bin/bash
    # shutdown pc
    sudo
    shutdown +1

  3. 執行方法
    (1)在控制台輸入命令執行:
    sh
    test.sh
    (2)先給腳本可執行許可權,雙擊執行:
    右鍵此文件,選擇屬性->許可權,最下方會有一個「允許以程序執行文件」,將這一項勾選,就可以了。
    或在命令行下附予許可權:
    chmod 777
    test.sh 或: chmod +x test.sh

❽ shell腳本如何批量運行代碼

可以哈。需要後台運行並且記錄下進程號。代碼我沒有嘗試。邏輯是這樣。


sh_PID=""
py_PID=""
INFO_FILE="~/.myshell_info"
log_file1="~/.log_file1"
log_file2="~/.log_file2"
if[-e"$INFO_FILE"];then
(readsh_PID;readpy_PID)<"$INFO_FILE"
kill-9$sh_PID
kill-9$py_PID
rm"$INFO_FILE"
else
rm"$INFO_FILE"
nohupxxx.sh2>&11>>"$log_file1"&
echo$!>>"$INFO_FILE"
nohuppythonxxx.py2>&11>>"$log_file2"&
echo$!>>"$INFO_FILE"
fi

❾ 如何對shell腳本進行批量注釋

採用下面這種形式:

:<<COMMENTBLOCK
代碼行1
代碼行2
代碼行3
COMMENTBLOCK

注意:第二個COMMENTBLOCK需要頂格寫,前面不能有空格。

當然,這兩個COMMENTBLOCK也可以替換成任意在被注釋代碼行中未出現過的字元串。、


其實是利用了Here Documents,將代碼段作為空命令 : 的輸入。

關於Here Documents,參見:http://linux.die.net/abs-guide/here-docs.html

❿ 怎麼用shell腳本批量給多台伺服器傳輸文件

scp-i~/.ssh/id_rsa-p8888/tmp/[email protected]:/tmp

能看懂嗎?

-i 後邊跟著你的key

別的不用解釋了吧?

如果是默認埠不用加-p參數