如何自动化一些linux命令

如何自动化一些linux命令,linux,ksh,Linux,Ksh,我做过很多windows命令shell脚本编写,但我是linux的新手。是否有某种方法可以编写/自动执行以下命令,以便我所要做的就是(用windows术语)“运行批处理文件”来完成所有这些?以下是我的步骤,顺序如下: 启动putty,选择主机名和端口,单击打开(也希望编写脚本/自动化第一部分) linux外壳/终端打开 我输入我的登录名和密码 我输入这个命令:sudo su-psoftXXX 我再次输入我的pwd并按enter键 我看到一个小小的cmdshell菜单和一个提示。我必须键入“1”

我做过很多windows命令shell脚本编写,但我是linux的新手。是否有某种方法可以编写/自动执行以下命令,以便我所要做的就是(用windows术语)“运行批处理文件”来完成所有这些?以下是我的步骤,顺序如下:

  • 启动putty,选择主机名和端口,单击打开(也希望编写脚本/自动化第一部分)
  • linux外壳/终端打开
  • 我输入我的登录名和密码
  • 我输入这个命令:sudo su-psoftXXX
  • 我再次输入我的pwd并按enter键
  • 我看到一个小小的cmdshell菜单和一个提示。我必须键入“1”并按enter键
  • 光盘/
  • 光盘日志
  • cd-hr
  • cd-DV
  • cd应用服务
  • 任先生*
  • ls

有什么方法可以使这一切或其中的一部分自动化吗?谢谢。

是的,您可以在linux中编写shell脚本。每个shell脚本都以

#!/bin/bash
<commands>
. 
.
.
至于自动化第一部分,这可能有点棘手,我认为如果您首先以psoftXXX身份登录,您可以删除整个
sudo su psoftXXX

希望这能对您有所帮助,这里有一个很好的资源可以帮助您开始编写shell脚本
是的。一旦你了解了这一点,你就会发现,与Windows相比,在Linux中编写脚本是一种乐趣。想象一下(可怕的)命令提示符和(不那么可怕的)PowerShell之间的差别,然后将差别乘以10,这就是在Linux中编写脚本的好处

术语是“shell脚本”,因为命令处理器(相当于Windows命令提示符)被称为“shell”。为了让生活更加充实,Linux提供了各种shell。最常见的是
sh
的变体,如
bash
ash
。不过,有些疯狂的人使用的是
csh
tcsh
或其他语法迥异的语言

创建脚本 要创建一个“shell脚本”,即批处理文件,只需创建一个文本文件,顶部有以下行:

#!/bin/bash
(或者不管你的外壳叫什么名字)。通常,文件名可能以
.sh
结尾,或者根本没有特殊的文件结尾

在文件的其余几行中,只列出您想要运行的命令,就好像您是在普通的Linux终端上键入它们一样

然后为该文件分配“执行”权限。在命令行中,可以使用
chmodu+x filename.sh
。这意味着为当前用户添加执行权限

当你开始学习在shell中可以做的所有不同的事情时,真正的乐趣就来了。例如,有如下巧妙的技巧:

my-first-command && my-second-command   # only runs my-second-command if my-first-command succeeded
或者这个:

my-background-command &   # runs my-background-command in the background, so that you can get on with other things
还有很多非常棒的小Linux/UNIX程序,它们可以轻松地将其他程序连接在一起,例如
grep
uniq
xargs

你的具体例子 不过,在解释了这一切有多伟大之后,我认为这并不是你真正需要做的

示例中的shell脚本部分归结为:

rm /logs/hr/DV/appserv/JEN*; ls /logs/hr/DV/appserv
我得到的印象是,您希望从Windows自动登录以运行这些命令

我相信在PuTTY中,如果它是通过SSH连接的,您可以给它一个运行命令。这就是我要做的

  • 使用PuTTY在Windows计算机上生成ssh密钥。(我不记得怎么做了——我想有PuTTYGen或类似的)
  • 将生成的公钥复制到
    psoftXXX
    用户的
    .ssh
    目录中名为
    authorized\u keys
    的文件中。你可以直接复制粘贴它;这可能比做任何花哨的事都容易。请注意,此目录和/或文件可能不存在,在这种情况下,您需要创建它们;如果文件已经存在,请确保将新密钥附加到文件末尾,而不是覆盖它
  • 现在尝试使用PuTTY和ssh再次连接。它应该以
    psoftXXX
    用户身份自动登录
  • 最后,在PuTTY设置中,您可能可以指定上面给出的命令行。您可能需要这样指定它:

    my-first-command && my-second-command   # only runs my-second-command if my-first-command succeeded
    
    /bin/bash-c“rm/logs/hr/DV/appserv/JEN*;ls/logs/hr/DV/appserv”

  • 请注意,有一个阶段我没有自动完成,那就是在菜单上按1。这是因为我怀疑这个菜单是通过给你一个特殊的默认登录shell实现的,它不是
    /bin/bash
    ,而是
    /something/somethine/which/shows/a/menu
    。我希望,如果您在PuTTY中指定了一个替代命令,那么该设置将被完全忽略,相反,您将运行脚本


    你可能需要玩一会儿。祝你好运

    让我们把它分成几个任务:

    通过SSH连接到

    首先,避免在脚本中使用密码。而是使用公钥/私钥。生成一对:

    $ ssh-keygen
    
    按照这些步骤,应该生成两个文件(id_rsa,id_rsa.pub),id_rsa.pub是公钥

    转到要连接的服务器,以psoftXXX身份登录,并在$HOME/.ssh/authorized_keys中添加存储在id_rsa.pub中的公钥

    现在,您应该能够以psoftXXX用户的身份连接到服务器,而无需键入密码:

    $ ssh psoftXXX@<server>
    
    $ssh psoftXXX@
    
    现在是另一项任务。通过SSH删除这些文件

    $ ssh psoftXXX@<server> rm -f /logs/hr/DV/appserv/JEN*
    
    $ssh psoftXXX@rm-f/logs/hr/DV/appserv/JEN*
    
    这将作为psoftXXX连接到服务器(服务器不会询问密码),并将执行“rm-f”

    如果我必须定期运行它,我会使用cron。你应该去看看

    顺便说一句。。。尝试以下命令:

    $ man <command>
    $ man -k <keyword>
    $ man man
    
    $man
    $man-k
    $man-man
    
    我曾经在工作中遇到过类似的问题。我厌倦了不得不登录到shell中。我们的主系统的安全方式意味着它处于脱机状态。为了登录,我们必须首先ssh到网络中的在线系统,然后ssh从该机器到主系统。以下是程序