スーパーコンピューター(CentOS)で使用するbashスクリプトがあります。このコンピューターは、インターネットにアクセスできる単一のノード(「connectedNode」と呼びます)が存在するように設定されています。このノードを介して、他のすべてのノード(「workNodes」と呼びます)にアクセスできます。ほとんどの作業は、connectedNodeを介してworkNodeにSSH接続した後に実行されます。
私は本質的にこのワンライナーであるbashスクリプトを持っています:
#!/bin/bash
# scpdropbox
scp $1 myusername@desktop:/Users/myusername/Dropbox/Inbox
これにより、次のようなコマンドを実行できます。
scpdropbox file.name
また、すべてのノードと外部コンピューター(デスクトップ)の間にsshキーを設定したので、このファイルを最終的に配置したいので、うまく機能します。もちろん、これは、connectedNodeから実行している場合にのみ機能します。そうでない場合、 workNodeがインターネットに接続されていないため、このコマンドは失敗します。
このスクリプトを変更して、workNodeからこのコマンドを実行し、 connectedNodeを介してデスクトップに正しいファイルなどを送信できるようにするにはどうすればよいですか?
私がこれまでに試したこと(コメントアウト):
PWD=$(pwd)
# ssh myusername@connectedNode <<'ENDSSH'
# ssh -t myusername@connectedNode <<'ENDSSH'
ssh -t -t myusername@connectedNode <<'ENDSSH'
#commands to run on remote host
# scp \$PWD/\$1 myusername@desktop:/Users/myusername/Dropbox/Inbox
# scp '$PWD'/'$1' myusername@desktop:/Users/myusername/Dropbox/Inbox
scp $PWD/$1 myusername@desktop:/Users/myusername/Dropbox/Inbox
ENDSSH
そして、それらは機能しません。次のようなエラーが発生します:
Pseudo-terminal will not be allocated because stdin is not a terminal.
/home/dir/myusername: not a regular file
tcgetattr: Inappropriate ioctl for device
私が試したことのどれに応じて。