Skip to content

Commit 6544176

Browse files
committed
ShellDriver: put_key_file: write keys in chunks of 100 chars
Because of limits to the number of characters allowed on the command line, break up the writing public ssh keys into 100 character chunks. fixes labgrid-project#1627 Signed-off-by: Perry Melange <[email protected]>
1 parent dbeb38c commit 6544176

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

labgrid/driver/shelldriver.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,12 @@ def _inject_run(self):
213213
)
214214
self.console.expect(self.prompt)
215215

216+
def _write_key(self, keyline, dest):
217+
for i in range(0, len(keyline), 100):
218+
part = keyline[i:i+100]
219+
self._run_check(f'echo -n "{part}" >> {dest}')
220+
self._run_check(f'echo "" >> {dest}')
221+
216222
@step(args=['keyfile_path', 'dest_authorized_keys'])
217223
def _put_ssh_key(self, keyfile_path, dest_authorized_keys):
218224
dest_authorized_keys_dir = os.path.dirname(dest_authorized_keys)
@@ -255,7 +261,7 @@ def _put_ssh_key(self, keyfile_path, dest_authorized_keys):
255261

256262
if test_write == 0 and read_keys == 0:
257263
self.logger.debug("Key not on target and writeable, concatenating...")
258-
self._run_check(f"""echo "{keyline}" >> {dest_authorized_keys}""")
264+
self._write_key(keyline, dest_authorized_keys)
259265
self._run_check("rm ~/.test")
260266
return
261267

@@ -267,14 +273,14 @@ def _put_ssh_key(self, keyfile_path, dest_authorized_keys):
267273
self._run(f"""mkdir -p {dest_authorized_keys_dir}""")
268274
self._run_check(f"""chmod 700 {dest_authorized_keys_dir}""")
269275
self.logger.debug(f"""Creating {dest_authorized_keys}""")
270-
self._run_check(f"""echo "{keyline}" > {dest_authorized_keys}""")
276+
self._write_key(keylinei, dest_authorized_keys)
271277
self._run_check("rm ~/.test")
272278
return
273279

274280
self.logger.debug("Key not on target and not writeable, using bind mount...")
275281
self._run_check('mkdir -m 700 /tmp/labgrid-ssh/')
276282
self._run(f"""cp -a {dest_authorized_keys_dir}/* /tmp/labgrid-ssh/""")
277-
self._run_check(f"""echo "{keyline}" >> /tmp/labgrid-ssh/authorized_keys""")
283+
self._write_key(keyline, "/tmp/labgrid-ssh/authorized_keys")
278284
self._run_check('chmod 600 /tmp/labgrid-ssh/authorized_keys')
279285
out, err, exitcode = self._run(f"""mount --bind /tmp/labgrid-ssh/ {dest_authorized_keys_dir}""")
280286
if exitcode != 0:

0 commit comments

Comments
 (0)