Skip to content

royans/gbash

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 

Repository files navigation

gbash - Gen-AI based linux shell

Learning all the bash commands can sometimes be a pain for someone new.

  • Wouldn't it be nice if we could use Gemini to translate natural language into something linux would understand ?
  • This project is a very tiny proof of concept
  • It takes instructions in natural language and converts it into something which could be run on linux
  • Note : This is really a Proof-of-concept. It will run commands Gemini tells it to, so please do not run on product infrastructure.
To use this please set the environment variable API_KEY to your Gemini API key.
You can find your Gemini key at https://aistudio.google.com/app/apikey

Setup Step 1 - install "google.generativeai" (one time only)
   pip3 install google.generativeai

Setup Step 2 -  setup your key in your environment variable (every time u use shell, or put it in your .bashrc script)
   API_KEY='API KEY HERE'
   export API_KEY

- Once done you can do this to setup
   python3 gbash.py "Please count the total number of processes on this system"
$ python3 gbash.py "Please check and tell if the webserver on this server is operating correctly. "
========
FINAL_SCRIPT
#!/bin/bash
service apache2 status
========
● apache2.service - The Apache HTTP Server
     Loaded: loaded (/usr/lib/systemd/system/apache2.service; enabled; preset: enabled)
     Active: active (running) since Sun 2024-05-05 00:27:58 UTC; 36min ago
       Docs: https://httpd.apache.org/docs/2.4/
   Main PID: 4313 (apache2)
      Tasks: 55 (limit: 4687)
     Memory: 6.5M (peak: 6.9M)
        CPU: 246ms
     CGroup: /system.slice/apache2.service
             ├─4313 /usr/sbin/apache2 -k start
             ├─4316 /usr/sbin/apache2 -k start
             └─4317 /usr/sbin/apache2 -k start

May 05 00:27:58 desktop3.us-central1-a.c.m0nitor.internal systemd[1]: Starting apache2.service - The Apache HTTP Server...
May 05 00:27:58 desktop3.us-central1-a.c.m0nitor.internal systemd[1]: Started apache2.service - The Apache HTTP Server.
$ python3 gbash.py "What type of physical storage does this server have ?"
========
FINAL_SCRIPT
#!/bin/bash
sudo lshw -class disk
========
  *-disk
       description: SCSI Disk
       product: PersistentDisk
       vendor: Google
       physical id: 0.1.0
       bus info: scsi@0:0.1.0
       logical name: /dev/sda
       version: 1
       size: 20GiB (21GB)
       capabilities: gpt-1.00 partitioned partitioned:gpt
       configuration: ansiversion=6 guid=6ae7b212-f7ff-475e-8a03-7ba7b71ed3b3 logicalsectorsize=512 sectorsize=4096

========
FINAL_ANSWER
This server has SCSI Disk type of physical storage.
========
This server has SCSI Disk type of physical storage.
$ python3 gbash.py "please tell me how much disk and memory storage I have on this server."
========
FINAL_SCRIPT
#!/bin/bash
df -h
free -h
========
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        19G  3.1G   16G  17% /
tmpfs           2.0G     0  2.0G   0% /dev/shm
tmpfs           783M  964K  782M   1% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
efivarfs         56K   24K   27K  48% /sys/firmware/efi/efivars
/dev/sda16      881M   61M  759M   8% /boot
/dev/sda15      105M  6.1M   99M   6% /boot/efi
tmpfs           392M   12K  392M   1% /run/user/1001
               total        used        free      shared  buff/cache   available
Mem:           3.8Gi       453Mi       3.3Gi       1.3Mi       303Mi       3.4Gi
Swap:             0B          0B          0B
$ python3 gbash.py "find the largest log file by size under /var/log directory"
the largest file under /var/log directory is /var/log/lastlog
$ python3 gbash.py "who were the last 10 unique users on this syetm ?"
========
FINAL_SCRIPT
#!/bin/bash
last | cut -d" " -f1 | sort -u | tail -10
========

reboot
royans
wtmp
$ python3 gbash.py "show all the tcp6 ports listenning on this server"
========
FINAL_SCRIPT
#!/bin/bash
netstat -6an | grep LISTEN
========
tcp6       0      0 :::22                   :::*                    LISTEN     
tcp6       0      0 :::80                   :::*                    LISTEN   
$ python3 gbash.py "does this server have any webserver running ?"
========
FINAL_SCRIPT
#!/bin/bash
if pgrep -x "apache2" > /dev/null
then
    echo "Yes, Apache2 is running"
elif pgrep -x "nginx" > /dev/null
then
    echo "Yes, Nginx is running"
else
    echo "No webserver is running"
fi
========
Yes, Apache2 is running

========
FINAL_ANSWER
Yes, this server has Apache2 running
========
Yes, this server has Apache2 running

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Languages