使用except将参数从本地脚本传递到远程脚本

马俊

您好,我是新手,期待脚本编写。我试图使用ssh spawn调用远程脚本并将命令行参数传递给远程脚本,但是在远程脚本中我得到了空值。请帮助解决此问题。在脚本中传递参数是否存在问题?

本地Expect脚本

#!/usr/bin/expect
set hana_schema [lindex $argv 1]
set table [lindex $argv 2]
set condition [lindex $argv 3]
set yyyymm [lindex $argv 4]
set targetdir [lindex $argv 5]
set split [lindex $argv 6]
set timeout 120
set ip XXXX.XXX.XX.XX
set user name
set password pass
set script /path-to-script/test.sh
# here I spawn a shell that will run ssh and redirect the script to ssh's

spawn sh -c "ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $user@$ip bash $hana_schema $table $condition $yyyymm $targetdir $split < $script" "$hana_schema" "$table" "$condition" "$yyyymm" "$targetdir" "$split"
expect "Password:"
send "$password\r"

# and just wait for the script to finish
expect eof

远程脚本test.sh

hana_schema=$1
table=$2
condition=$3
yyyymm=$4
targetdir=$5
split=$6
echo "$hana_schema"
echo "$table"
echo "$condition"
echo "$yyyymm"
echo "$targetdir"
echo "$split"
格伦·杰克曼

在这种情况下,您只是将期望脚本参数传递给未修改的远程脚本。将它们保存在单独的变量中确实没有意义。同样也不需要用sh包装ssh调用。我会这样做:

#!/usr/bin/expect
set timeout 120
set ip XXXX.XXX.XX.XX
set user name
set password pass
set ssh_opts {-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no}
set script /path-to-script/test.sh

spawn ssh {*}$ssh_opts $user@$ip bash $script {*}$argv

expect "Password:"
send "$password\r"
expect eof

{*}语法将列表扩展成其各个元素。参见http://www.tcl.tk/man/tcl8.6/TclCmd/Tcl.htm

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何通过以不同用户身份通过ssh传递远程参数来执行本地脚本?

来自分类Dev

将参数传递到远程脚本块

来自分类Dev

SCP从远程到本地脚本未复制

来自分类Dev

使用ssh将带有标志的本地脚本运行到远程计算机

来自分类Dev

Powershell 远程处理:在脚本中加载本地脚本

来自分类Dev

通过本地重定向从本地脚本进行远程sudo

来自分类Dev

如何在远程计算机上执行本地脚本并包含参数?

来自分类Dev

如何在远程服务器上运行带有多字参数的本地脚本?

来自分类Dev

使用本地参数值执行远程脚本

来自分类Dev

使用参数远程执行脚本将参数传递给`bash`而不是脚本

来自分类Dev

本地脚本中的dgram

来自分类Dev

如何通过多个SSH在远程计算机上的参数中运行带有空格的本地脚本?

来自分类Dev

将参数传递到Powershell脚本

来自分类Dev

将参数传递到Powershell脚本

来自分类Dev

将参数从文件传递到bash脚本

来自分类Dev

PHP将参数传递到后台脚本

来自分类Dev

如何将参数传递到Powershell脚本并在远程计算机上运行

来自分类Dev

Shell脚本现在在远程服务器上执行本地脚本

来自分类Dev

执行远程登录并执行另一个本地脚本的脚本

来自分类Dev

将参数从shell脚本传递到配置单元脚本

来自分类Dev

将参数从Windows批处理脚本传递到Powershell脚本

来自分类Dev

将参数从bash脚本传递到脚本中的函数

来自分类Dev

如何使用本地脚本处理Ansible的输出

来自分类Dev

Roblox Studio Lua:使用本地脚本克隆

来自分类Dev

远程执行本地脚本并将输出直接返回到本地文件

来自分类Dev

JENKINS 将参数作为输入传递给远程主机脚本

来自分类Dev

在本地使用其他参数执行远程python脚本

来自分类Dev

无法使用SSH将字符串参数(多行)传递给远程脚本

来自分类Dev

使用KVM将脚本传递到VM

Related 相关文章

  1. 1

    如何通过以不同用户身份通过ssh传递远程参数来执行本地脚本?

  2. 2

    将参数传递到远程脚本块

  3. 3

    SCP从远程到本地脚本未复制

  4. 4

    使用ssh将带有标志的本地脚本运行到远程计算机

  5. 5

    Powershell 远程处理:在脚本中加载本地脚本

  6. 6

    通过本地重定向从本地脚本进行远程sudo

  7. 7

    如何在远程计算机上执行本地脚本并包含参数?

  8. 8

    如何在远程服务器上运行带有多字参数的本地脚本?

  9. 9

    使用本地参数值执行远程脚本

  10. 10

    使用参数远程执行脚本将参数传递给`bash`而不是脚本

  11. 11

    本地脚本中的dgram

  12. 12

    如何通过多个SSH在远程计算机上的参数中运行带有空格的本地脚本?

  13. 13

    将参数传递到Powershell脚本

  14. 14

    将参数传递到Powershell脚本

  15. 15

    将参数从文件传递到bash脚本

  16. 16

    PHP将参数传递到后台脚本

  17. 17

    如何将参数传递到Powershell脚本并在远程计算机上运行

  18. 18

    Shell脚本现在在远程服务器上执行本地脚本

  19. 19

    执行远程登录并执行另一个本地脚本的脚本

  20. 20

    将参数从shell脚本传递到配置单元脚本

  21. 21

    将参数从Windows批处理脚本传递到Powershell脚本

  22. 22

    将参数从bash脚本传递到脚本中的函数

  23. 23

    如何使用本地脚本处理Ansible的输出

  24. 24

    Roblox Studio Lua:使用本地脚本克隆

  25. 25

    远程执行本地脚本并将输出直接返回到本地文件

  26. 26

    JENKINS 将参数作为输入传递给远程主机脚本

  27. 27

    在本地使用其他参数执行远程python脚本

  28. 28

    无法使用SSH将字符串参数(多行)传递给远程脚本

  29. 29

    使用KVM将脚本传递到VM

热门标签

归档