【问题标题】:how to run a local script in remote server using expect and bash script如何使用expect和bash脚本在远程服务器中运行本地脚本
【发布时间】:2012-11-11 16:31:05
【问题描述】:

我想自动化我的支持工作。我想制作一个脚本,它将连接到服务器并在服务器上执行一些 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

【问题讨论】:

    标签: bash unix ssh expect


    【解决方案1】:

    你的脚本结构应该是:

    1. 通过 SSH 连接。
    2. CRUD 操作
    3. 退出 SSH。

    带有 CRUD 操作的脚本必须在远程计算机上,因为您无法运行不在您要运行它的计算机上的任何脚本。

    【讨论】:

    • 请清楚你想说什么,软件和脚本有两种不同的东西。请注意它们之间的区别。
    • 你的意思是说我不能在远程服务器上运行本地脚本吧?
    • 您不能在远程服务器上运行本地脚本。但是,如果您的远程服务器与本地计算机具有相同的软件,则可以这样做。
    【解决方案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 /"登录

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

    1. 第一遍成功后,尝试将“ls /”替换为您的脚本。

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

    在完成第一步之前不要进入第 2 步。

    使用像这样的 ssh 教程——这会对你有所帮助

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

    【讨论】:

    • 嗨 alinsoar,谢谢你的信息。我还有一个疑问,如果我想执行的命令只有在我通过超级用户登录服务器时才会执行,这意味着我然后 ssh 服务器我通过触发查询“su - user”然后是密码和我想要触发的命令以超级用户身份登录。
    • 可以帮助我如何将超级用户身份验证添加到脚本中,这样当我运行像“ssh user@remote
    • 这将执行script,就像您在本地以用户user 运行它一样,即如果您以root 身份登录,脚本将以root 优先级运行。
    • 如果你初始化ssh agent,ssh 不会要求输入密码。
    • 尝试阅读基础教程。我已经告诉了你比你开始工作更多的细节。
    【解决方案3】:
    ssh user@server bash < /path/to/local/script.sh
    

    【讨论】:

    • 如何在脚本中添加超级用户身份验证。我的意思是我想在以超级用户身份登录服务器后运行脚本。请帮忙
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-18
    • 2019-12-03
    • 1970-01-01
    • 2018-03-14
    • 1970-01-01
    • 2013-12-28
    • 1970-01-01
    相关资源
    最近更新 更多