簡體   English   中英

將數據從集群本地復制到 pod 的腳本既不工作也不給出任何錯誤

[英]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 在我的本地運行上述命令:

  1. 將腳本 scp 到遠程:
import os

command = "scp script.sh user@ip:/path/on/remote"
os.system(command)
  1. 將腳本 scp 到遠程:
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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM