将数据从集群本地复制到 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
为了确保上述功能正常工作,我尝试了另一个脚本:
#!/usr/bin/bash
cd /home/ec2-user/PVs/clear-nginx-deployment
mkdir kk
这个 运行 具有相同的 python 功能,并在所需路径中创建目录 '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
函数来 运行 我本地的上述命令:
- scp 脚本到远程:
import os
command = "scp script.sh user@ip:/path/on/remote"
os.system(command)
- scp 脚本到远程:
import os
command = "sshpass -p \"passowrd\" ssh user@ip \"cd /path/on/remote ; sudo su -c './script.sh'\""
os.system(command)
我试图从代理服务器在 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
为了确保上述功能正常工作,我尝试了另一个脚本:
#!/usr/bin/bash
cd /home/ec2-user/PVs/clear-nginx-deployment
mkdir kk
这个 运行 具有相同的 python 功能,并在所需路径中创建目录 '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
函数来 运行 我本地的上述命令:
- scp 脚本到远程:
import os
command = "scp script.sh user@ip:/path/on/remote"
os.system(command)
- scp 脚本到远程:
import os
command = "sshpass -p \"passowrd\" ssh user@ip \"cd /path/on/remote ; sudo su -c './script.sh'\""
os.system(command)