如何自动化一些linux命令

Her*_*der 4 linux ksh

我已经做了很多windows命令shell脚本,但我是linux的新手.有没有什么方法可以编写脚本/自动化以下命令,以便我所要做的就是(在Windows术语中)"运行批处理文件"来完成所有这些操作?以下是我的步骤:

  • 启动putty,选择主机名和端口,单击Open(希望脚本/自动化这个第一部分)
  • linux shell /终端打开
  • 我输入我的登录名和密码
  • 我输入这个命令:sudo su - psoftXXX
  • 我再次进入我的密码并点击进入
  • 我看到一个小cmd-shell菜单和提示.我必须输入"1"然后按回车键
  • cd /
  • cd日志
  • cd hr
  • cd DV
  • cd appserv
  • rm JEN*
  • LS

有什么方法可以自动化全部或部分内容?谢谢.

Adr*_*lor 6

是.一旦你知道它,你就会发现Linux中的脚本与Windows相比是一种乐趣.想象一下(可怕的)命令提示符和(不那么可怕)PowerShell之间的区别,然后将这个差异乘以10,这就是Linux中脚本的好坏程度.

术语是"shell脚本",因为命令处理器(相当于Windows命令提示符)称为"shell".只是为了让生活更有果味,Linux有各种各样的shell.最常见的是sh诸如bash和的变体ash.然而,一些疯狂的人使用csh或者使用tcsh其他语法,这些语法具有令人烦恼的不同语法.

创建脚本

要创建"shell脚本",即批处理文件,只需在顶部创建一个带有此行的文本文件:

#!/bin/bash
Run Code Online (Sandbox Code Playgroud)

(或者你的shell的名字是什么).通常,文件名可以结束,.sh或者可能根本没有特殊文件结束.

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

然后为该文件分配"执行"权限.从命令行,您将使用chmod u+x filename.sh.这意味着为当前用户添加eXexecute权限.

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

my-first-command && my-second-command   # only runs my-second-command if my-first-command succeeded
Run Code Online (Sandbox Code Playgroud)

或这个:

my-background-command &   # runs my-background-command in the background, so that you can get on with other things
Run Code Online (Sandbox Code Playgroud)

也有很多了不起的小的Linux/UNIX程序,这使得它很容易与其他程序连接在一起的-例如grep,uniq,xargs.

你的具体例子

虽然解释了这一切有多棒,但我认为这实际上并不是你需要做的.

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

rm /logs/hr/DV/appserv/JEN*; ls /logs/hr/DV/appserv
Run Code Online (Sandbox Code Playgroud)

我得到了您想要从Windows自动登录以运行这些命令的印象.

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

  1. 使用PuTTY在Windows机器上生成ssh密钥.(我不记得怎么做 - 我认为有PuTTYGen或类似的).
  2. 复制公共导致成一个名为关键authorized_keys的中.ssh的目录psoftXXX用户.你可以直接复制并粘贴它; 这可能比做任何花哨更容易.请注意,此目录和/或文件可能不存在,在这种情况下,您需要创建它们; 如果文件已经存在,那么一定要将新密钥附加到文件的末尾而不是覆盖它.
  3. 现在尝试使用PuTTY和ssh再次连接.它应该以psoftXXX用户身份自动登录.
  4. 最后,在PuTTY设置中,您可以指定上面给出的命令行.您可能需要像这样指定它:

    / bin/bash -c"rm/logs/hr/DV/appserv/JEN*; ls/logs/hr/DV/appserv"

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

你可能需要玩一下.祝好运!