I have a localhost:5000
port that is hosted by python3
server in ubuntu
. How to i know which file it serves without knowing anything extra?
I am using lsof -i :5000
and i only know that it is hosted by python 3. I am trying to locate the file/folder hosted by that that without any extra knowledge given. The thing i know that yes, there is some file being hosted at port 5000 using python3. But i dunno what is the name of the file hosted and which directory it is located.
Also tried fuser 5000/tcp -v
but id dones not show the file hosted.
Is that possible and what command do i need to get all file/folder hosted by it?
Answer
lsof
should have told you the PID of the process. Let's call it $pid
. Investigate what is inside /proc/$pid/
. Some of the following commands may require root access (i.e. you may want to sudo su -
beforehand).
cd /proc/$pid
readlink exe # the executable
readlink cwd # current working directory
xxd cmdline # command line (xxd useful because items are null-separated)
cd /proc/$pid/fd
ls -l # file descriptors in use
Additionally interact with the server (e.g. download the file) while using strace
to see what it does. See this answer: how to investigate what a process is doing?
Or you can download the file and try to find a duplicate by comparing the content. Preliminary comparison by size may speed things up greatly.
file="/path/to/the/downloaded/file"
size=`<"$file" wc -c`
# now you will probably want to use sudo
find / -type f ! -path "/proc/*" ! -path "/sys/*" ! -path "/dev/*" -size ${size}c -exec cmp -s "$file" {} \; -print
unset -v file size # just to clean
Note I excluded /proc/
, /sys/
and /dev/
. You may also get familiar with -xdev
(see man 1 find
) and use it maybe.
No comments:
Post a Comment