如何使用脚本自动打开提示,ssh和执行操作?

时间:2014-12-12 02:21:23

标签: linux bash shell ubuntu ssh

我必须从我自己的Ubuntu机器连接到Linux服务器并直接在服务器上运行。 LIST文件中列出了十几个文件夹名称。怎么写...... (像bash脚本?)执行以下程序?

for fold_name in LIST {  
/******on my own Ubuntu*******/  
 -- open 2 new tabs of prompt terminal  
 -- run an ssh command in both  
 -- then input passwd and log in automatically in both  
/******on the linux server*******/  
 -- cd to directory xxx/fold_name in both  
 -- run aaa.exe in 1st tab  
 -- vim sth in the 2nd tab  
}  

一旦open-tab-login的循环得到解决,我猜第二部分就是常规的简单bash脚本,除了我不知道如何在两个标签之间指定。
关键是我希望同一终端中的所有选项卡。为此,手动,我经常按Ctrl + Alt + T创建提示,按Ctrl + Shift + T打开其中的许多标签。并且ssh ...... cd ......在每一个中。你看到它是多么烦人和麻烦!

2 个答案:

答案 0 :(得分:2)

您可能希望研究一些事情,这会让您更接近。

如果使用ssh密钥,则可以在没有密码的情况下运行ssh。查看ssh-keygen和ssh中的-i选项。

在gnome-terminal中打开标签可以通过此处描述的方法完成:Open a new tab in gnome-terminal using command line

您可以通过在ssh:ssh user@remotehost aaa.exe之后包含命令,在ssh上的远程盒子上运行特定命令(例如aaa.exe)。

如果您需要多个命令,请尝试将它们括在引号中:ssh user@remotehost "cd /xxx; aaa.exe"。在大多数情况下,Vim不需要在相关目录中:ssh user@remotehost vim /xxx/filename"

如果你想做一些互动的事情(比如vim),请在ssh中加入-t标志。

选项卡将彼此独立 - 我可能在一个窗口中运行一半命令,另一个(例如,在一个窗口中使用一个命令运行aaa.exe,在另一个窗口中运行vim,使用另一个命令,我恰好在同一时间运行。这样我就可以调整窗口的大小,并将它们相对于彼此排列,并立即看到它们。

答案 1 :(得分:1)

-- open 2 new tabs of prompt terminal

这取决于您使用的桌面。对于gnome,gnome-terminal使用-e选项指定要在新终端窗口中执行的脚本。因此,对于类似这样的事情,您将执行gnome-terminal -e $script &,将gnome-terminal的每个实例放在后台。

如果您使用其他桌面,则其他终端应用程序通常具有类似选项。因此,您将终端应用程序指向将在终端中运行的脚本,并为您完成剩余的任务。

-- run an ssh command in both
-- then input passwd and log in automatically in both

这会更复杂。经典的解决方案是expect utility。可能有其他类似的工具可以做类似的事情,但expect几乎是过去这类事情的通常方式。在尝试自动化交互式应用程序时,expect确实是唯一的出路。不幸的是,expect使用了一种有点arkane的语法,首次使用的用户通常会感到困惑,难以理解。我抱怨,每当我看到没有其他选择,只能使用expect自动化某些东西,但这几乎是通常可用的唯一选择。