linux遠程執行本地腳本
1. linux shell 遠程連接腳本怎麼寫 Linux
樓上亂講,你在腳本里 ssh username@遠程主機ip 這樣寫的話會提示你輸入密碼,腳本不能實現自動化還有什麼意義。
直接在shell腳本里是實現不了自動登錄的,你需要藉助expect腳本。
redhat下默認是沒有安裝expect,你可以用yum install expect來安裝。
安裝完成後編寫腳本如下
#!/usr/bin/expect -f
set timeout 30
spawn ssh username@host
expect "*assword:*"
send "password\r"
expect eof
保存後給它加上可執行許可權,就可以用這個腳本登錄了。
解釋一下
set timeout 30 設置超時時間
spawn spawn用來啟動一個新的進程
expect 用來等待你所期望的系統返回的字元串
send 用來向系統發送一個字元串,即你的密碼
expect eof 等待接受文件結束符。
夠詳細了吧。累死我了。
2. linux怎麼遠程執行另一台linux機器上的shell文件
現在兩台及器間設這ssh的不用密碼的連接,設置共有和私有的密鑰
user1 (客戶端A) user2(服務端B)
產生密鑰
user1# ssh-keygen -t rsa
user1# ls .ss
is_rsa id_rsa.pub
私鑰 公鑰=============》導入
user1#ssh--id -i .ssh/id_rsa.pub user2@B的IP
user1#ssh user2@B的ip
在A機器上:
ssh B機器IP <<EOF
/opt/m.sh
exit
EOF
其實這也是在B上執行的,只是在內部執行的而已
3. Linux遠程執行Shell命令或腳本
1. 遠程執行Shell命令
2. 遠程執行Shell本地腳本
#
4. linux 如何自動遠程執行腳本
1、安裝sshpass
2、sshpass -p 「passwd」 ssh -p22 root@$dst_ip 「a.sh」
注意a.sh是目標主機里的腳本。
5. linux 遠程主機後台運行任務 掛起腳本
背景 :工作需要,需要遠程式控制制主機使其斷開Xshell後也能一直運行。
關鍵字 :& ,nohup,腳本掛起。
在應用Unix/Linux時,我們一般想讓某個程序在後台運行,於是我們將常會用 & 在程序結尾來讓程序自動運行。
鍵入Ctrl + C,發出SIGINT信號,程序會繼續運行
方法一、輸入命令:jobs
方法二:輸入命令:ps
fg、bg、jobs、&、nohup、ctrl+z、ctrl+c 命令
加在一個命令的最後,可以把這個命令放到後台執行,如
可以將一個正在前台執行的命令放到後台,並且處於暫停狀態。
查看當前有多少在後台運行的命令
jobs -l選項可顯示所有任務的PID,jobs的狀態可以是running, stopped, Terminated。但是如果任務被終止了(kill),shell 從當前的shell環境已知的列表中刪除任務的進程標識。
將後台中的命令調至前台繼續運行。如果後台中有多個命令,可以用fg %jobnumber(是命令編號,不是進程號)將選中的命令調出。
將一個在後台暫停的命令,變成在後台繼續執行。如果後台中有多個命令,可以用bg %jobnumber將選中的命令調出。
法子1:通過jobs命令查看job號(假設為num),然後執行kill %num
法子2:通過ps命令查看job的進程號(PID,假設為pid),然後執行kill pid
前台進程的終止:Ctrl+c
如果讓程序始終在後台執行,即使關閉當前的終端也執行(之前的&做不到),這時候需要nohup。該命令可以在你退出帳戶/關閉終端之後繼續運行相應的進程。
關閉中斷後,在另一個終端jobs已經無法看到後台跑得程序了,此時利用ps(進程查看命令)
如上所示:
nohup 和 & 組合了後台運行程序。
可以輸出到 out.log保存程序輸出,也可以輸出到/dev/null 即空設備,不保存輸出。
上面三種方式無論在nohup.out 或test.out都看不到數據結果,這是因為python執行有緩存輸出
解決
新的介面接入查看程序
使用&後台運行程序:
結果會輸出到終端
使用Ctrl + C發送SIGINT信號, 程序免疫
關閉session發送SIGHUP信號, 程序關閉
使用nohup運行程序:
結果默認會輸出到nohup.out
使用Ctrl + C發送SIGINT信號, 程序關閉
關閉session發送SIGHUP信號, 程序免疫
平日線上經常使用nohup和&配合來啟動程序:
同時免疫SIGINT和SIGHUP信號
同時,還有一個最佳實踐:
不要將信息輸出到終端標准輸出,標准錯誤輸出,而要用日誌組件將信息記錄到日誌里
nohup和&究竟有啥區別
6. Linux下如何運行sql腳本
Linux運行sql腳本的具體操作步驟如下:
1、使用shell工具登陸到安裝postgresql的伺服器,切換到postgres用戶,postgresql默認的操作用戶,命令是:su - postgres,查看當前路徑是/var/lib/psql,創建一個test.sql腳本文件,命令是:vim test.sql。
7. linux 遠程調用腳本執行後不繼續執行後續命令,需要輸入ctrl+c,詳細見補充
兩個問題.
1. 確定你A機器當前用戶的密鑰文件在B機器的~/.ssh/id_dsa.pub裡面.
參考: http://renyongjie668.blog.163.com/blog/static/160053120101210221908/
2. 修改你的腳本如下.
ssh [email protected] "cd /;sh b.sh" >/dev/null 2>&1
echo 「finish"
還有問題的話.可以找我.我們慢慢排除.