-
Notifications
You must be signed in to change notification settings - Fork 0
/
README.Rmd
127 lines (104 loc) · 2.91 KB
/
README.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
---
title: ssh-dynconf
output:
github_document
---
```{r, echo=FALSE,include=FALSE}
# Make sure colors from tput are used correctly in the output
options(crayon.enabled = TRUE)
knitr::knit_hooks$set(output = function(x, options) {
paste0(
# "<svg fill=\"none\" viewBox=\"0 0 600 300\" width=\"600\" height=\"300\" xmlns=\"http://www.w3.org/2000/svg\">",
# "<foreignObject width=\"100%\" height=\"100%\">",
'<pre class="r-output">',
paste0(
"<code>",
paste0(
fansi::to_html(
x =
htmltools::htmlEscape(x),
warn = FALSE,
carry = FALSE
),
collapse = " \n"
),
"</code>",
collapse = "\n"
),
"</pre>"
# "</foreignObject>",
# "</svg>"
)
})
num_colors <- function(forget = TRUE) 256
library(crayon)
assignInNamespace("num_colors", num_colors, pos = "package:crayon")
Sys.setenv("TERM" = "dumb")
print_help <-
function(x) {
cat(
system(
paste0(
"/usr/bin/env bash -c \"source ./ssh-dynconf-init && ",
x,
" --help\""
),
intern = TRUE),
sep =
"\n"
)
}
```
Functions for dynamically generating / modifying ssh config files and availability checks ssh hosts
## Core functions
### Check ssh hosts' availability
#### `ssh_host_available`
```{r, eval=TRUE, echo=FALSE,include=TRUE,comment=""}
print_help("ssh_host_available")
```
#### `ssh_available_hosts`
```{r, eval=TRUE, echo=FALSE,include=TRUE,comment=""}
print_help("ssh_available_hosts")
```
### Modify ssh config file(s)
#### `ssh_config_update`
```{r, eval=TRUE, echo=FALSE,include=TRUE,comment=""}
print_help("ssh_config_update")
```
## Examples
The following basic examples how to use `ssh-dynconf` are located in the [`Examples/`](examples/) folder:
```{r, echo=FALSE,include=FALSE}
knitr::knit_hooks$set(output = function(x, options) {
c(
'```bash',
paste0(
paste0(
x,
collapse = " \n"
),
collapse = "\n"
),
"```"
)
})
```
Connecting to a host referred to as `examplehost`
on port `50212`:
```{bash ssh_command,echo=TRUE,eval=FALSE,comment=NA}
ssh -F ssh_config examplehost -p 50212
```
using a dynamic [configuration](https://man7.org/linux/man-pages/man5/ssh_config.5.html)
can be achieved using a [`ssh_config`](examples/ssh_config) that contains
```{bash ssh_config,echo=FALSE,comment=NA}
cat "examples/ssh_config"
```
If the entered host matches 'examplehost',
a script [`make-examplehost-config.sh`](examples/make-examplehost-config.sh) is executed, e.g. containing
```{bash ssh_script,echo=FALSE,comment=NA}
cat "examples/make-examplehost-config.sh"
```
to create/modify a configuration file [`examplehost-config`](examples/examplehost-config)
with a conditional hostname for `examplehost`. \
This [`examplehost-config`](examples/examplehost-config) is then included in the
as configuration in the original
[`ssh_config`](examples/ssh_config).