aboutsummaryrefslogtreecommitdiff
path: root/shellrc.d/ssh
diff options
context:
space:
mode:
authorKarel Kočí <cynerd@email.cz>2023-03-21 18:19:32 +0100
committerKarel Kočí <cynerd@email.cz>2023-03-21 20:46:05 +0100
commit7be0acbb1cd6b6d3c4c3df95611cb86be4b46915 (patch)
treefcdca6619a05b1e72ebb8b9ddf0d04586b434e94 /shellrc.d/ssh
parentf0eab21bab34beb657059cf5dfe91ca8072edb35 (diff)
downloadshellrc-7be0acbb1cd6b6d3c4c3df95611cb86be4b46915.tar.gz
shellrc-7be0acbb1cd6b6d3c4c3df95611cb86be4b46915.tar.bz2
shellrc-7be0acbb1cd6b6d3c4c3df95611cb86be4b46915.zip
Drop desktop variant and rework nix packages
Diffstat (limited to 'shellrc.d/ssh')
-rw-r--r--shellrc.d/ssh23
1 files changed, 23 insertions, 0 deletions
diff --git a/shellrc.d/ssh b/shellrc.d/ssh
new file mode 100644
index 0000000..e2882c8
--- /dev/null
+++ b/shellrc.d/ssh
@@ -0,0 +1,23 @@
+# vim: ft=sh:
+
+# SSHFS in client mode. In other words it is reverse sshfs mount.
+sshcfs() {
+ local target="$1"
+ local local_dir="$2"
+ local remote_dir="$3"
+ shift 3
+ [[ "$local_dir" = /* ]] || local_dir="$PWD/$local_dir"
+
+ local sftp_server="/usr/lib64/misc/sftp-server"
+ if [ -e /run/current-system/sw/bin/ssh ]; then
+ sftp_server="$(readlink -f /run/current-system/sw/bin/ssh)"
+ sftp_server="${sftp_server%/bin/ssh}/libexec/sftp-server"
+ fi
+
+ ssh "$@" "$target" mkdir -p "$remote_dir"
+ dpipe \
+ "$sftp_server" \
+ = \
+ ssh "$@" "$target" sshfs -o idmap=user -o passive -o allow_other \
+ ":$local_dir" "$remote_dir"
+}