summaryrefslogtreecommitdiffstats
path: root/krebs/5pkgs/get-ssh-port/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'krebs/5pkgs/get-ssh-port/default.nix')
-rw-r--r--krebs/5pkgs/get-ssh-port/default.nix29
1 files changed, 29 insertions, 0 deletions
diff --git a/krebs/5pkgs/get-ssh-port/default.nix b/krebs/5pkgs/get-ssh-port/default.nix
new file mode 100644
index 00000000..2d106b2b
--- /dev/null
+++ b/krebs/5pkgs/get-ssh-port/default.nix
@@ -0,0 +1,29 @@
+{ config, pkgs, ... }: with config.krebs.lib;
+
+pkgs.writeScriptBin "get-ssh-port" ''
+ #! ${pkgs.dash}/bin/dash
+ set -efu
+ if test $# != 1 || test $1 = -h || test $1 = --help; then
+ echo "usage: get-ssh-port HOSTNAME" >&2
+ exit 23
+ fi
+ case $1 in
+ ${concatMapStringsSep ";;\n"
+ (host: toString [
+ "(${shell.escape host.name})"
+ "echo ${toString host.nets.${config.krebs.search-domain}.ssh.port}"
+ ])
+ (filter (host: hasAttr config.krebs.search-domain host.nets)
+ (attrValues config.krebs.hosts))
+ };;
+ ${concatMapStringsSep ";;\n"
+ (net: toString [
+ "(${concatMapStringsSep "|" shell.escape net.aliases})"
+ "echo ${toString net.ssh.port}"
+ ])
+ (concatMap (host: attrValues host.nets) (attrValues config.krebs.hosts))
+ };;
+ (*) echo "get-ssh-port: don't know ssh port of $1" >&2
+ exit 1
+ esac
+''