如何解决将数据从本地集群复制到 pod 的脚本既不工作也不给出任何错误
我试图从代理服务器在 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 的 system
模块中使用了 os
函数在我的本地运行上述命令:
- 将脚本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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。