不是一个编程问题,但与许多程序员有关......
假设我已经打开了另一台计算机的SSH会话.
remote:html avalys $ ls
welcome.msg index.html readme.txt
remote:html avalys $
是否有任何命令可以在我的远程shell中键入,它会立即将当前目录中的一个文件(例如welcome.msg)传输到我的本地计算机,即
remote:html avalys $ stransfer welcome.msg
获取/home/avalys/html/welcome.msg到welcome.msg
/home/avalys/html/welcome.msg 100%23KB 23.3KB/s 00:00
remote:html avalys $
我知道这样做的唯一方法是在SSH会话中打开并行SFTP会话和CD到我当前的目录,这是远程管理服务器时的真正PITA.
编辑:我知道使用反向sftp/scp连接的可能性,但这涉及更多的打字.如果我只能键入一些命令的名称(例如"stransfer"),以及我想要传输的文件,那就太棒了.
我尝试在ssh上构建一个管道链.
mkfifo localpipe; 并在远程机器上 mkfifo remotepipe;
cat localpipe | ssh -q einstein "cat > remotepipe"
使用echo "input;" > localpipe我可以将输入发送到从remotepipe读取的程序.但之后,remotepipe,localpipe和ssh-connection将被关闭.有没有办法保持localpipe和ssh打开但关闭remotepipe,我需要为了使远程端的程序处理它的输入?
如果这对cat或其他一些unix命令不起作用,我可以在C中写一个短猫替换来实现这个目的吗?
localpipe也可能已关闭但我想保持ssh打开速度的原因.