2017-04-12 192 views
1

我的問題是將.py文件從客戶機複製到遠程服務器,然後將.py腳本運行到遠程服務器。Linux - 從客戶端向遠程服務器運行命令

注:我需要執行相同的服務器數爲n所以基本上我在這裏希望創造一種自動化的腳本,將這樣做。

從我的同事我才知道,爲了實現自動化,密碼登錄少是必須的(種的先決條件)。

爲了達到同樣的,我首先複製公鑰到我的遠程服務器(手動),然後創建一個腳本,不SCP的shell腳本從客戶端複製到遠程。 shell腳本負責運行.py文件。

添加公鑰和scp爲我工作。

請不要讓我知道,如果將公共密鑰實際需要實現自動化完成這個任務。

我在Linux世界初學者,所以如果可能的話,請詳細答案,而回復。

我的腳本:

#!/bin/bash 
# Linux/UNIX box with ssh key based login 
Script=/home/linuxadmin/installer_linux.py 
Destination=/home/linuxadmin/script 
time=`date` 
output=/home/linuxadmin/output_mainscript/ 
[email protected] 
PASSWORD=12345 


#Loop For Installing software on multimple servers 
for f in `cat host.txt`; 
do 
    scp $Script $f:$Destination ### Copying file from source to destination 
    echo "-------- start time "$time"echo "----------"" | tee -a $output/mainscript_log.txt 
    sshpass ssh $f "sudo /usr/bin/python $Destination/installer_linux.py --no-prompt -u $USERNAME -p $PASSWORD " | tee -a $output/mainscript_log.txt ### Executing files on Destination 
    echo "-------- End time "$time"echo "----------"" | tee -a $output/mainscript_log.txt 
done 
+0

如果你想要詳細的答案,你需要寫一個詳細的問題。從你說的話來看,'scp'是否沒有密碼就沒有清楚。如果確實如此,那麼您需要幫助的部分是什麼?如果沒有,它究竟要求什麼(可能還有私鑰的密碼),你是如何複製私鑰的(因此有人可以檢查你是否正確地做了)。沒有確切的命令和確切的輸出,我們不能說出你可能會做錯什麼。 –

+0

對於陳述的問題,答案僅僅是肯定的,複製密鑰是必要的,因爲這將如何進行身份驗證(除非您擁有Kerberos並且正在通過票證進行身份驗證)。但是,這不僅僅是/真正的複製;您必須將密鑰放在授權密鑰列表中。 –

+0

你可能想看看是否可行,它可以完成這項工作:https://github.com/ansible/ansible –

回答

1

請不要讓我知道,如果加上公共密鑰實際需要 實現此任務的自動化。

是的,您需要將主/控制器節點(您打算執行scp的節點)的公鑰複製到所有其他節點/服務器。


建議1: 我假設,你想不只是一個一次性任務的一些解決方案,但長期管理(糾正我,如果我錯了)。

使用配置管理工具 - 按你的情況下,單一的管理節點,僅僅部署的.py腳本,

我推薦使用Ansible。通過Anisble,您可以從控制器節點開始,製作清單(主機/機器列表),並在所有節點/機器上共享控制器的公鑰。

和所有你需要做的(一旦安裝在那裏,這是非常簡單的) - 是更新的劇本,甚至從控制器/主服務器中的所有服務器上執行的命令。


這裏有一些非常簡單的英語博客上手:


免責聲明:我上面的博客帖子的作者。

+0

看起來非常有幫助。讓我先試試看,然後讓你知道。 – Developer

+0

嗯,你還好。因爲它將提供一致性,可擴展性和最低限度的管理。 –

+0

它也適用於CentOS嗎?我使用的分享的博客是 – Developer

相關問題