Potřebuju vydolovat data z interaktivního bash shellu spuštěného vzdáleně přes ssh. Historii a zadefinovanou promennou. Napadly mě 2 způsoby, zkopírovat datovou strukturu historie přes gdb, ale to se mi nadařilo ,druhý způsob napojit se na stávající PID a "unést-přivlastnit" stdin a stdout. to jsem zkoušel ale nešlo mi to
(chci tam spustit příkaz - defacto vypsat proměnnou) Ještě visí bash v paměti PC, dostanu se k němu.
lrwx------ 1 64 říj 9 22:39 0 -> /dev/pts/4
lrwx------ 1 64 říj 9 23:26 1 -> /dev/pts/4
lrwx------ 1 64 říj 9 23:26 2 -> /dev/pts/4
lrwx------ 1 64 říj 9 23:26 255 -> /dev/pts/4
gdb descriptory: (jde o výplod ai, zkoušel jsem víc verzí, s call (int)dup2 třeba, )
# Assume you want to redirect stdout to "output.txt" and stdin from "input.txt"
# Open the output file
call open("output.txt", 0x601, 0644) # O_WRONLY | O_CREAT | O_TRUNC
set $fd_out = $rax # Store the file descriptor returned by open
# Open the input file
call open("input.txt", 0x0, 0) # O_RDONLY
set $fd_in = $rax # Store the file descriptor returned by open
# Redirect stdout
call dup2($fd_out, 1) # Redirect stdout (fd 1) to output.txt
# Redirect stdin
call dup2($fd_in, 0) # Redirect stdin (fd 0) to input.txt
# Close the file descriptors if needed
call close($fd_out)
call close($fd_in)
Zkoušel jsem cd /proc/ID/fd. Zápis jde, ale čtení nic nevypisuje. (zkoušel jsem přímo i /dev/pts/4)
balík bash-dbgsym nemám dostupný přes apt.
Snažil jsem se i přes gdb -p
print history_info_ ... No symbols table loaded
info proc mappings ; find (stack a heap) ... find 0x... , 0x... , "retezec" - nenašlo
Jde to nějak? Nemá třeba ten bash ty deskriptory třeba už uzavřené, když visí v paměti dlouho? Proč nejde čtení (a asi ani zápis) z /proc/pid/fd/N ?