如何自动化一些linux命令

我已经做了很多的Windows命令行脚本,但我是一个Linux新手。 有什么办法可以脚本/自动化以下命令,以便我所要做的是(在Windows术语中)“运行batch file”来做这一切? 这是我的步骤,为了:

启动腻子,select主机名和端口,单击打开(也喜欢脚本/自动化第一部分)

linux shell / terminal打开

我input我的login名和密码

我input这个命令:sudo su – psoftXXX

我再次input我的密码,然后回车

我提出了一个小cmd-shell菜单和提示。 我必须input“1”并回车

cd /

CD日志

cd小时

CD DV

光盘应用服务

rm JEN *

LS

任何方式来自动化的全部或部分? 谢谢。

如何将文件从X sub_dir移动到Y sub_dir

我可以获取KornShell中当前脚本的绝对path吗?

将ksh脚本从unix迁移到linux

为循环范围不工作ksh

bash – 最好的方法来禁用日志文件

是。 一旦你知道它,你会发现Linux的脚本与Windows相比是一种乐趣 。 想象一下(可怕的)命令提示符和(不太可怕的)PowerShell之间的差异,然后乘以差异十,这是多么好的脚本在Linux。

术语是“shell脚本”,因为命令处理器(相当于Windows命令提示符)被称为“shell”。 为了让生活变得更加果味,Linux有各种各样的shell。 最常见的是sh变体,如bash和ash 。 一些疯狂的人使用csh或者tcsh或者其他的,但是它们的语法令人讨厌。

创建一个脚本

要创建一个'shell脚本',也就是一个批处理文件,只需在这个顶部创建一个文本文件:

#!/bin/bash

(或者你的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

或这个:

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_keys的文件中。 你可以从字面上复制和粘贴; 这可能比做任何事情都容易。 请注意,此目录和/或文件可能不存在,在这种情况下,您需要创建它们; 如果文件已经存在,那么一定要将新密钥追加到文件的末尾,而不是覆盖它。

现在尝试使用PuTTY和ssh重新连接。 它应该自动以psoftXXX用户身份登录。

最后,在PuTTY设置中,您可以指定上面给出的命令行。 你可能需要像这样指定它:

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

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

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

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

#!/bin/bash <commands> . . .

如果你想运行上面的命令,它会看起来像这样

#!/bin/bash cd /logs/hr/DV/appserv rm JEN* ls

至于自动化的第一部分,可能会有点棘手,我想你可以剪出整个sudo su psoftXXX如果你刚刚登录为psoftxxx在第一位…

希望有所帮助,这里有一个很好的资源,让你开始编写shell脚本http://linuxcommand.org/writing_shell_scripts.php

有一次,我在工作中遇到了类似的问题。 我厌倦了登录shell。 我们的主系统安全的方式意味着它离线。 为了登录,我们必须首先ssh到网络中的在线系统,然后从该机器ssh到主系统。 这是过程的样子。

1.) Launch putty using the profile set up for the first machine. I had already made the effort to set the login command to ssh into the next server. 2.) Enter my user password 3.) use su to log into root 4.) enter the root password 5.) use gradm on my user 6.) source my .bashrc

不用说,这一切对我来说似乎都是毫无意义的。 在窗户上,我发现自动化腻子的选项不是很好。 Cygwin来救援。 设置它需要一些工作,但一旦完成,完全值得你节省的时间。

这里是我建议使用的终端/ ssh的应用程序:

Cygwin – https://www.cygwin.com/或MobaXterm – http://mobaxterm.mobatek.net/

我已经用香草Cygwin(如果你想要一个标签式终端接口可以与Console2一起使用)和MobaXterm,这使得腻子看起来完全过时了这种方法。 如果您打算使用Cygwin,请使用apt-cyg或Cygwin安装程序安装expect软件包。 如果您要尝试使用MobaXterm,那么您需要从MobaXterm插件页面下载tcl / expect插件。

你可以使用expect库来自动化任何事情。 如果你不熟悉TCL语言,那么也有一个基于Python的版本。

这是一个指导 – http://www.cotse.com/dlf/man/expect/bulletproof1.htm – 这应该有助于你开始学习期望。 使用期望我能够编写我的整个工作区。 连接到远程计算机,登录已经减少到我的Cygwin .bashrc文件中的一个别名。

这里是预期的主页 – http://expect.sourceforge.net/

有关此主题的其他详细信息,说明和提示将在未来的编辑中提供。

让我们分成几个任务:

通过SSH连接到。

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

$ ssh-keygen

按照步骤,应该生成两个文件(id_rsa,id_rsa.pub),id_rsa.pub是公钥。

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

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

$ ssh psoftXXX@<server>

现在是另一个任务。 通过SSH删除这些文件。

$ ssh psoftXXX@<server> rm -f /logs/hr/DV/appserv/JEN*

这将连接到服务器作为psoftXXX(服务器不会要求密码),并将执行“rm -f”。

如果我必须定期运行这个,我会使用cron。 你应该检查一下。

顺便说一句…试试这个命令:

$ man <command> $ man -k <keyword> $ man man

相关文章

Git安装和使用 Git安装和使用 刚开始用git的小白适用,,转自...
fatal: remote origin already exists.解决方法 第一个问题g...
git常用命令(二)查看历史记录 git log [--pretty=oneline]...
git之如何把本地文件上传到远程仓库的指定位置 git专栏收录该...
代码规范之 lint-staged 在代码提交之前,进行代码规则检查能...
方法:1、文件没有git操作时用“git checkout--文件”命令还...