我试图找到使用 ssh 上传文件的最简单方法,然后在同一 ssh 会话中在远程计算机上运行命令进行一些后处理,这样我就不需要再次登录。如果可能的话,上传应该显示一些进度指示器。
到目前为止,我研究了 scp 和 rsync,两者都无法运行任何钩子。 (我可以使用--rsync-path
参数来执行一些脚本前rsync)但我想做后处理。有没有办法打开 ssh 会话、上传、执行命令并再次关闭它?
答案1
好吧,您可以通过一个命令将整个过程通过管道传输,另一端则ssh
使用 a 。cat
这里我上传一个 shell 脚本,使其可执行,然后运行它:
$ cat sayhi.sh | ssh myserver 'cat > ./remotehi.sh ; chmod +x ./remotehi.sh ; ./remotehi.sh'
hello, world!
答案2
您可能需要ControlMaster
中的机制ssh
。