如何使用expect和bash脚本在远程服务器中运行本地脚本

时间:2012-11-23 10:10:22

标签: bash unix ssh expect

我想自动完成支持工作。我想创建一个脚本,它将连接到服务器并在服务器上执行一些CRUD操作,然后再次返回本地计算机。我不想上传脚本。现在我已经制作了一个脚本,它将有助于连接到服务器但我无法通过任何其他操作。是否可以在远程服务器上运行本地脚本?

我的剧本:

!/usr/bin/expect 
  set ip neviss
  set user user 
  set password 1234 
  spawn ssh "$user\@$ip" 
  expect "Password:" 
  send "$password\r"; 
  interact ( after this line any command is not getting executed) 
  ls -lrt

3 个答案:

答案 0 :(得分:2)

你可以这样做:

ssh user@remote-ssh-server "commands of script" 

如果将脚本保存到文件中,则可以这样做:

ssh user@remote-ssh-server << End
paste the script here
End

以下是一些细节。

  1. 使用"ssh your_user@ssh_server ls /"
  2. 登录

    此命令将登录,列出根目录,并关闭连接。

    1. 第1遍成功后,尝试用脚本替换“ls /”。

    2. 第二步成功后,启动一个ssh代理。

    3. 在完成第一步之前,请不要转到第2步。

      使用像这样的ssh教程 - 这将有助于你

      http://support.suso.com/supki/SSH_Tutorial_for_Linux

答案 1 :(得分:0)

您的脚本结构应为:

  1. 通过SSH连接。
  2. CRUD操作
  3. 退出SSH。
  4. 具有CRUD操作的脚本必须位于远程计算机上,因为您无法运行任何不在您要运行它的计算机上的脚本。

答案 2 :(得分:0)

ssh user@server bash < /path/to/local/script.sh
相关问题