[PATCH] ssh-add: support parser-friendly operation
Jochen Bern
Jochen.Bern at binect.de
Sat Jan 11 06:30:20 AEDT 2025
On 10.01.25 18:27, Corey Hickey wrote:
> On 2025-01-10 01:35, Jochen Bern wrote:
>> Please don't. If you want to ever get people to load their privkeys into
>> the agent *with a limited lifetime*, having a trivial, *universal* way
>> to check whether they have expired by now is an asset.
>
> With my patch v2, that would need to be:
> > alias ssh='ssh-add -l | grep -q . || sshadd ; ssh'
Which admittedly would still be "trivial", but there's a reason why I
stressed "universal". (I'm sort of the SSH/tunneling/crypto-parms guru
here and my SSH configs/templates tend to percolate throughout the IT
and support dpt.s, whatever their local OpenSSH version happens to be.)
Of course, if OpenSSH executables could output further
(version-dependent) Best Current Practices on their own usage in a shell
(script), like "ssh-agent -s" does ... ;-)
> ...though the message "The agent has no identities." would be printed to
> stderr, for better or for worse. Perhaps that should require a higher
> log_level (via -v).
(Nothing a "2>&1" or "2>/dev/null" on top couldn't fix, FWIW.)
> That said, I do think the current behavior is not optimal. In a general
> sense, when listing something, an empty list is a valid outcome. If the
> listing tool returns an error status after _successfully_ determining
> that the list is empty, then the caller cannot easily know whether the
> tool succeeded or was unable to determine the list.
I can see that, but I wouldn't consider it good enough a reason on its
own to break backwards compatibility ...
(FWIW, "grep" is technically not outputting a list, but a list of lists
- one list of matches for every file named in the params - and offers
condensing this into a plain list again, think "grep -l $USER /etc/*".
I'd guess that further condensing that into a single exit status made
sense in a "someone *will* find this useful" way. Which raises the
question whether the currently *plain* list output by "ssh-add -l" might
see subcategories in the future - say, per providers or constraints ...)
On 10.01.25 18:57, Jim Knoble wrote:
> When Damien wrote:
>
>> Adding a new exit status for the
>> no-keys-in-agent case would be
>> acceptable too I think.
>
> I interpreted that as "make ssh-add exit with status 2 or 3 or 99, for example, as opposed to 1".
>
> That is differentiate between:
>
> - There is an agent, and it has keys, and ssh-add listed them (exit status 0).
> - There is no agent, or there is a problem communicating with the agent (exit status 1).
> - There is an agent, but it has no keys (exit status 2, for example).
Agreed - with the minor caveat that IIUC higher values tend to get
assigned to the *more* severe failure.
Kind regards,
--
Jochen Bern
Systemingenieur
Binect GmbH
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 4336 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://lists.mindrot.org/pipermail/openssh-unix-dev/attachments/20250110/f737edfd/attachment-0001.p7s>
More information about the openssh-unix-dev
mailing list