[英]Script to copy data from cluster local to pod is neither working nor giving any error
我試圖從代理服務器在 K8S 集群節點上運行的 bash 腳本如下:
#!/usr/bin/bash
cd /home/ec2-user/PVs/clear-nginx-deployment
for file in $(ls)
do
kubectl -n migration cp $file clear-nginx-deployment-d6f5bc55c-sc92s:/var/www/html
done
此腳本不會復制主節點路徑/home/ec2-user/PVs/clear-nginx-deployment
中的數據。
但是當我在目標集群上手動嘗試相同的腳本時它工作正常。
我正在使用 python 的paramiko.SSHClient()
遠程執行腳本:
def ssh_connect(ip, user, password, command, port):
try:
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(ip, username=user, password=password, port=port)
stdin, stdout, stderr = client.exec_command(command)
lines = stdout.readlines()
for line in lines:
print(line)
except Exception as error:
filename = os.path.basename(__file__)
error_handler.print_exception_message(error, filename)
return
為了確保上述 function 工作正常,我嘗試了另一個腳本:
#!/usr/bin/bash
cd /home/ec2-user/PVs/clear-nginx-deployment
mkdir kk
這個使用相同的 python function 運行良好,並在所需路徑中創建目錄“kk”。 如果您可以請提出背后的原因,或提出替代方案來執行此操作。 先感謝您。
現在問題已經解決了。
實際上,這個問題與我后來知道的權限有關。 所以我要解決的是,首先將腳本scp
到遠程機器:
scp script.sh user@ip:/path/on/remote
然后從本地機器運行以下命令遠程運行腳本:
sshpass -p "passowrd" ssh user@ip "cd /path/on/remote; sudo su -c './script.sh'"
正如我在問題中提到的那樣,我為此使用 python 。
我在 python 的os
模塊中使用了system
function 在我的本地運行上述命令:
import os
command = "scp script.sh user@ip:/path/on/remote"
os.system(command)
import os
command = "sshpass -p \"passowrd\" ssh user@ip \"cd /path/on/remote ; sudo su -c './script.sh'\""
os.system(command)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.