putty - 将多个命令粘贴到 Putty 进程?

  显示原文与译文双语对照的内容

我有 3000个单独的命令,我需要通过 Putty 在一个系统上执行。 我通过复制命令 ~100 并将它们粘贴到 Putty SSH会话中来实现这一点。 但问题是,Putty 并不是串行处理它们,而且输出的混乱。

是否有方法使 Putty 处理每个命令,等待返回,然后处理下一个命令? Windows 命令提示符实现这一点,我认为有一种方法可以使用 Putty 进行这样的操作。

是的,我知道我可以将它放在bash脚本中,但由于控件外部情况,必须使用SSH进行监视。

时间: 原作者:

我 一直 这么 做. 将命令放入 () 块中,它将作为子shell运行,完全是串行的。 我正在运行 Windows Putty 并连接到Linux和AIX服务器。 试试。


(


Command1


Command2


Command3


)



在实践中,我可以能需要运行大量的100s 个语句,在 NotePad++ 或者任何内容中。 我将它们复制到剪贴板,然后在 Putty 中:


( 


 paste in your wad here


)



编辑:如果要单独记录每个语句的输出,可以能会执行如下操作:


(


Command1>/home/jon/command1output.txt


Command2>/home/jon/command2output.txt


Command3>/home/jon/command3output.txt


)



或者,如果你只需要一个大输出流,可以通过交错分隔符来更轻松地阅读:


(


echo"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"


echo"[`date`] Now running Command1.. ."


Command1


echo"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"


echo"[`date`] Now running Command2.. ."


Command2


echo"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"


echo"[`date`] Now running Command3.. ."


Command3


)



EDIT2: 使用内联函数的另一个变体。 全部粘贴到 Putty,具有完美的串行运行,记录为 command1: output1,command2: output2.。 ,并且能够驱动 SQL*Plus 。


(


 function geniusMagic() {


 echo""


 echo"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"


 date


 echo"RUNNING COMMAND:"


 echo""


 echo"$*"


 echo""


 echo"OUTPUT:" 


 echo""


 sh -c"$*"


 }



 geniusMagic df -m/home


 geniusMagic 'printf $RANDOM | sed"s/0//g"'


 geniusMagic 'echo"select count(*)


 FROM all_tables;


" | sqlplus -s scott/tiger'


)



示例输出:


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


Wed Jun 25 17:41:19 EDT 2014


RUNNING COMMAND:



df -m/home



OUTPUT:



Filesystem MB blocks Free %Used Iused %Iused Mounted on


/dev/hd1 1024.00 508.49 51% 3164 3%/home



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


Wed Jun 25 17:41:19 EDT 2014


RUNNING COMMAND:



printf $RANDOM | sed"s/0//g"



OUTPUT:



2767


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


Wed Jun 25 17:41:19 EDT 2014


RUNNING COMMAND:



echo"select count(*)


 FROM all_tables;


" | sqlplus -s scott/tiger



OUTPUT:



 COUNT(*)


----------


 48



...