Assuming you had the secrets stored in a secrets.json file in your home directory in this format:
{
"github": "github2FAsecretKey",
"some_other_account": "2FAsecretKeyForSomeOtherAccount"
}
You could make a simple otp.py
script and basic TOTP library to generate them in a script & copy them to clipboard:
#!/usr/bin/env python3
import json
from pyotp import TOTP
import os
from sys import argv
try:
file = json.load(open(os.path.join('/home','username','secrets.json')))
if len(argv) > 1:
totp = TOTP(file[str(argv[1])])
code = totp.now()
cmd = 'cb cp $(echo %s | tr -d "\n")' % code
os.system(cmd)
else:
print(f"Available args:\n {'\n '.join(list(file.keys()))}")
except Exception as e:
print(f'Error in OTP: {e}')
Then you just alias otp='f() { $HOME/otp.py $1 };f'
in your shell profile/rc and call it with e.g. otp some_other_account
or just otp
if you forget what key names you gave them to get a reminder list. Obviously you'd want to replace the JSON plaintext file load with an actual secret store if you're not a lazy madman. I am a lazy madman.
Edit: when I stop being lazy I will probably switch to that [email protected] suggestion below (pass + pass-otp extension).