Skip to content
Advertisement

Can bash be used to communicate directly with hardware?

I am interested in writing my own tool in bash to act in place of my current network controller (wpa_supplicant) if possible. For example if I want to issue commands in order to begin a wps authentication session with a router’s external registrar, is it possible, without using any pre-built tools, to communicate with the kernel to directly access the hardware? I have been told that I can achieve what I desire with a bash plugin called ctypes.sh but I am not too certain.

Advertisement

Answer

Generally speaking, the Linux kernel can interact with user-space through the following mechanisms:

  • Syscalls
  • Devices in /dev
  • Entries in /sys
  • Entries in /proc

Syscalls cannot be directly used from Bash but you need at least a binding through a C program.

You can create a Linux kernel driver or module which reads/writes data in an entry under /proc or /sys and then use a bash program to interact with it. Even if technically feasible, my personal opinion is that it is an overkill, and the usual C/C++ user-level programming with proper entries in /dev is much better.

User contributions licensed under: CC BY-SA
7 People found this is helpful
Advertisement