1

I found a command to directly scp my file to a host (C) via another host (B) from my computer. The command is in this form:

scp -oProxyCommand="ssh -W %h:%p B" thefile C:destination

I used it and it works good in command line. but when I want to write an expect script using this command, I got some errors. the script I've written is in this form:

#!/usr/bin/expect

set arg1 [lindex $argv 0]

spawn scp -oProxyCommand="ssh -W %h:%p B" ./$arg1 C:destination 

interact

and the error is:

unknown option -- W 

W option works in command line but not in expect script. Can anybody tell me why?

steeldriver
  • 142,475

1 Answers1

1

Much easier would be to configure this in the ~/.ssh/config, where you don't need to care about the syntax of the expect scripts and its issues with arguments. Create ~/.ssh/config with this content:

Host C
  ProxyCommand ssh -W %h:%p B

and then connect just using

spawn scp ./$arg1 C:destination

Or just use the simplified version using ProxyJump option:

spawn scp -oProxyJump=B ./$arg1 C:destination 
Jakuje
  • 6,793