( shyciii | 2022. 10. 15., szo – 12:33 )

No csináltam egy megoldást. A sokadik keresésben találtam egy teljesen más fzf-es használatot. De a gondolkodásmódja viszont használhatónak tűnt, és azt felhasználva meg is tudtam oldani. A lényege, hogy létrehoztam egy file-t, amibe felsoroltam a menüpontokat és a hozzájuk tartozó parancsokat amit le kell futtatni a kiválasztáskor. Ezeket elválasztottam egy kettősponttal, tehát a kettőspont lett a delimiter. Például

BACKUP:ssh name@ip -p 8911 -i ~/.ssh/user
ICINGA:nmcli connection up userlaptop > /dev/null;ssh name@ip -i ~/.ssh/user;nmcli connection down userlaptop > /dev/null
REMOTE:ssh name@ip -i ~/.ssh/user

Aztán csináltam egy scriptet ami ezt tartalmazza:

#!/bin/bash

file="/path/server.txt"
selection1=$(cut -f1 -d ':' ${file} | fzf --prompt='Válassz szervert: ' --layout=reverse --no-multi)
selection2=$(grep $selection1 ${file} | cut -f2 -d ':')

eval "$selection2"

 

Definiáltam a file változóban ezt a szöveges filet, amiben az adatokat vannak. A selection változó tartalmazza azt a szerver nevet amit kiválasztottam az fzf menüjével. A selection 2 változó meg tartalmazza a kiválasztott szerverhez kapcsolódó parancsokat. Ezután parancsként értelmezem a selection2 függvény tartalmát. Lehetne bash -c -vel is futtatni, de így független a shelltől.