Skip to main content

Bash: Using websocketd as web-terminal

Recently, I have got a work that requires a control over remote machine along with few challenges like that machine can be accessed via Remote Desktop via VPN that goes via corporate Firewall. Now that made it very slow because each incoming or outgoing message packet have to cover the circumference of Earth to reach my system.

So I tried lot many tools out there that could solve my problem. I want to eradicate the use of Remote Desktop to expedite the communication.

Since the remote system is a Windows machine, so I tried using SSH via freesshd and found it pretty good. But I want something that could run over browser as web-app.

Finally I found this great tool that is available for converting any command-line program into web-application using WebSocket.

The tool is websocketd, a WebSocket daemon that takes care of handling the WebSocket connections, launching your programs to handle the WebSockets, and passing messages between programs and web-browser.

There are lot many use cases of this tool but I like to use it as a web-terminal.

So, first get the binary file from websocketd under download section. Then, place somewhere from where you can access it easily or make it globally accessible by adding it's location in environment variable path.

After that you can run this command,

$ ./websocketd --port=8080 --devconsole bash

Then open http://localhost:8080/ in the web browser. If you want to access it from any other machine the just replace the localhost with that system IP address.

Use the system commands in the devconsole to execute any command on that system.

Comments

Popular posts from this blog

Unlock protected blocks in Siemens SIMATIC Step 7

Recently I'd been called by Hindalco's Fabrication Plant division to unlock the protected blocks in Siemens SIMATIC Step 7. They were in need to unlock those blocks since an year because of 1 million Rupees of loss per month. They want to re-program those blocks but it was locked by the man who'd done the setup. From the people working in that department, I came to know that they were trying to call that man (someone from Italy) right here but he's not coming. Actually, what he'd done was that he'd locked some of the blocks and deleted the source file. And Siemens didn't provide any feature to unlock. Department people also told me that even the people working in Siemens don't know how to do it. Being a software engineer I know that any thing can be reverse engineered. So I took up the challenge. How did I unlocked the blocks? The first thing I'd done was searched about this software at Google and read about what is this software all about. Aft...

Launching a Jupyter Notebook with TensorFlow using Docker

This article will walk you through setting up a Jupyter Notebook environment with TensorFlow pre-installed using Docker. Docker allows you to run isolated containerized applications, providing a consistent environment regardless of your underlying operating system. Prerequisites: Docker: Ensure you have Docker installed and running on your system. You can download and install it from the official Docker website ( https://www.docker.com/ ). Steps: Start Docker: Open your Docker application (Docker Desktop for Windows/macOS or the command line if using Linux). Run the Jupyter Notebook container: For macOS/Linux: Open your terminal application and run the following command: docker run -it --rm -p 8888:8888 -v "${PWD}":/home/jovyan/work jupyter/tensorflow-notebook For Windows: Open your Command Prompt application and run the following command: docker run -it --rm -p 8888:8888 -v "%CD%":/home/jovyan/work jupyter/tensorflow-notebook Explanation of the command flags: -...

JS: The complete code example of Crypto.js (DES)

For one of the project I was trying to use crypto.js but I found that the Quick-start Guide have some deficiency in terms of library usage. So I am writing it here as a useful note for memory recap. <script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/tripledes.js"></script> <script> var encrypted = CryptoJS.DES.encrypt("The secret message", "secret_key"); var e_msg = encrypted.toString(); console.log(e_msg); var decrypted = CryptoJS.DES.decrypt(e_msg, "secret_key"); var d_msg = decrypted.toString(CryptoJS.enc.Utf8); console.log(d_msg); </script>