Is there any way in Linux/Unix to determine the client application user is using to connect to OS. In our environment thousand of users connect to our system via client applications like WinSCP, Dbvisualizer, putty etc. We need to check the client application that users are using to connect to Server.
Simple answer: No, there is no sure way. Terminal applications often will report available features when queried with the right escape sequences but this is sometimes not enough to detect which application is used, and it can very easily be faked.
In general, the actual terminal application used should not matter, so maybe you should rephrase your question to state the actual problem you try to solve instead.
There might be many tools the clients use, but the underlying techniques or
protocols these "tools" might use are same like '
SFTP, SSH, telnet' etc, to connect to the server. So all that system will see is some remote host is trying to open a
ssh or sftp session on this server. Check
/var/log/secure for more. Some common messages you would come across are:
ssh via tools like
putty or xshell:
sshd: Accepted password for root from 10.10.10.10 port 51162 ssh2 sshd: pam_unix(sshd:session): session opened for user root by (uid=0)
sshd: Accepted password for root from 10.10.10.10 port 51163 ssh2 sshd: pam_unix(sshd:session): session opened for user root by (uid=0) sshd: subsystem request for sftp
PS: But there might be some extravagant tools that might do your job.. never say never in this world of software!