当前位置: 首页 > 知识库问答 >
问题:

如何在kubernetes中使用cron作业运行包含ssh命令的Shell脚本

彭成天
2023-03-14

我想运行在kubernetes中使用cron作业的文件中具有ssh命令的外壳脚本

test.sh

#!/bin/bash

echo copying files from edge node to batch pods;
ssh -q userid@<hostname>"kubectl config use-context testnamespace";
ssh -q userid@<hostname>"kubectl scale statefulsets testpod --replicas=1";

当我通过pod手动执行它时,它会抛出错误“ssh command not found”,并触发作业抛出权限被拒绝的消息。

谁能帮我解决这个问题。

共有1个答案

东门俊智
2023-03-14

此消息(ssh命令未找到)表示pod中缺少ssh客户端。在评论中,您提到了docker,因此我假设您使用的是docker图像。

要在docker容器中安装SSH,您必须根据我们的Linux分发运行apt-get或yum或任何其他包管理器,这需要在Dockerfile中表示。

以下是如何实现这一目标的示例:

# A basic apache server. To use either add or bind mount content under /var/www

FROM ubuntu:12.04

MAINTAINER Kimbro Staken version: 0.1

RUN apt-get update && apt-get install -y apache2 && apt-get clean && rm -rf /var/lib/apt/lists/*

ENV APACHE_RUN_USER www-data

ENV APACHE_RUN_GROUP www-data

ENV APACHE_LOG_DIR /var/log/apache2

EXPOSE 80

CMD ["/usr/sbin/apache2", "-D", "FOREGROUND"]

在这个例子中,我们在ubuntu映像上安装apache。在您的场景中,您需要运行类似于以下内容的内容:

RUN apt-get update && apt-get install -y openssh-client && apt-get clean && rm -rf /var/lib/apt/lists/*
 类似资料:
  • 我试图在unix中使用JSCHSSH类(com.jcraft.jsch)执行一些工具。我的工具有一个选择菜单。我需要转到工具所在的文件夹,执行它并选择请求的选项。在每个命令之后,(cd,execute,…)我希望检查输出并检查状态代码(0/1)。我有下面的代码按预期执行它,但在这段代码中,我找不到一种方法来检查每个命令后的输出。 我无法找到一种方法,但我怎么能分开的命令,并打印他们一个接一个(在同

  • 我已经创建了一个自动化的测试套件使用Selenium网络驱动程序,Maven 但是,当同一个shell脚本使用cron作业运行时,不会执行maven命令。我在shell脚本中看到了一些为maven指定路径的解决方案。这对我也不管用。 #!/宾/巴什 "" cd/home/me/projects/my_test_suite 导出路径=$PATH:/home/me/installs/apache-ma

  • 问题内容: 在我们的centos6服务器中。我想以apache用户的身份在cron作业中执行php脚本,但不幸的是它不起作用。 这是crontab的版本(crontab -uapache -e) 这是“ test.php”文件的源代码,可以与“ apache”用户作为所有者正常工作。 我尝试将php替换为php的完整路径(/ usr / local / php / bin / php),但它也不起

  • 我想在Linux上运行SSH命令来启动/停止带有Laravel特使的服务器。但是,对于SSH::into()的语法,我得到了一个错误。我不知道该怎么办完全卡住了。我们需要一种方法来解决这个问题,让它发挥作用。特使设置并与“php artisan”命令配合使用: 命令:特使运行foo--user=root--host=94.130.97.242 这就是我为SSH::into()启动/停止服务器所做的

  • 问题内容: 我正在编写一个shell脚本,以自动添加新用户并更新其密码。我不知道如何获取passwd来从shell脚本中读取,而不是交互式地提示我输入新密码。我的代码如下。 问题答案: 来自“ ”: 所以你的情况 [ 更新 ]评论中提到了一些问题: 您的命令可能没有选项:按照ashawley的建议使用实用程序。 如果您使用的不是bash外壳,则“echo”可能不是内置命令,外壳将调用。这是不安全的

  • 问题内容: 我试图在docker容器中运行cron作业 但对我没有用 我的容器只有cron.daily和cron.weekly文件 crontab,cron.d,cron.hourly …在我的容器中不存在 crontab -e也无法正常工作 我的容器使用/ bin / bash运行 问题答案: 这是我运行我的cron容器之一的方法。 Dockerfile: crontab.txt entry.s