use /bin/bash for execution and add Windows support also

This commit is contained in:
wunderwuzzi23
2023-02-27 21:07:20 -08:00
parent 7df2bde646
commit 6fa492f871
3 changed files with 52 additions and 11 deletions
+6
View File
@@ -30,6 +30,12 @@ yolo create a file named test.txt and write my user name into it
yolo print the contents of the test.txt file
yolo -a delete the test.txt file
yolo whats the current price of Bitcoin in USD
yolo whats the current price of Bitcoin in USD. Extract the price only
yolo look at the ssh logs to see if any suspicious logons accured
yolo is the user hacker logged in right now?
yolo do i have a firewall running?
yolo create a hostnames.txt file and add 10 typical hostnames based on planet names to it
yolo write a new bash script file called scan.sh, with the contents to iterate over hostnames.txt and invokes a default nmap scan on each host. Make it over multiple lines with comments and annotiations.
```
# License
+1 -1
View File
@@ -1,3 +1,3 @@
openai==0.26.5
termcolor==2.2.0
pathlib
colorama
+45 -10
View File
@@ -5,20 +5,26 @@ import openai
import sys
import subprocess
from termcolor import colored
from pathlib import Path
from colorama import init
# Two options for the user to specify they openai api key
openai.api_key = os.getenv("OPENAI_API_KEY")
openai.api_key_path = Path.home()/".openai.apikey"
ask = False # safety switch -a
yolo = "" # user's answer to safety switch
command_start_idx = 1 # command starts at which argv index?
home_path = os.path.expanduser("~")
# Two options for the user to specify they openai api key
openai.api_key = os.getenv("OPENAI_API_KEY")
home_path = os.path.expanduser("~")
openai.api_key_path = home_path+"/.openai.apikey"
# parsing weirdness
if len(sys.argv) <2:
if len(sys.argv) < 2:
print("Usage Example: yolo [-a] list the current directory information")
sys.exit(-1)
# safety switch (no yolo mode)
if sys.argv[1] == "-a":
ask = True
command_start_idx = 2
@@ -34,12 +40,34 @@ if user_prompt == "":
print ("No user prompt specified.")
sys.exit(-1)
# Get shell info for a better prompt
# Unix based Shell?
shell = os.environ["SHELL"]
# Note: Have never tested this on Windows much
if shell == None:
shell = "powershell.exe"
# Construct the prompt
pre_prompt = "Translate the following question into a command. Only show the command in text format and not in code style or markdown. Do not augment the output with any explanation, descriptions. Again, do not add any descriptions, just print the bash command. This is important, do not ignore my instructions. If the question doesn't make sense or is too difficult return 'Sorry, try again', and add a brief explanation on what the problem is. The question is: "
pre_prompt = "Translate the following question into a {} command. ".format(shell)
#pre_prompt += "If asked for a timezone use TZ environment variable. "
#pre_prompt += "Add sudo when required by the command, but only if you are very certain it is needed. "
#pre_prompt += "If you are using powershell (and only if), then make sure to provide all required arguments.""
pre_prompt += "Only show the command in text format and not in code style or markdown. "
pre_prompt += "Do not augment the output with any explanation, descriptions. "
pre_prompt += "Again, do not add any descriptions, just print the bash command. This is important, do not ignore my instructions. "
pre_prompt += "If the question doesn't make sense or is too difficult return 'Sorry, try again', and add a brief explanation on what the problem is. "
pre_prompt += "The question is: "
prompt = pre_prompt + user_prompt +"?"
prompt = pre_prompt + user_prompt
#print ("The prompt is: "+prompt, end="")
#let's be nice and make it a question
if prompt[-1:] != "?":
prompt+="?"
#print ("The prompt is: "+prompt)
response = openai.Completion.create(
model="text-davinci-003",
prompt=prompt,
@@ -52,15 +80,22 @@ response = openai.Completion.create(
resulting_command = response.choices[0].text.strip()
#enable color output on Windows using colorama
init()
if resulting_command.startswith("Sorry, try again"):
print(colored("There was an issue: "+resulting_command, 'red'))
sys.exit(-1)
print("Command: " + colored(resulting_command, 'blue'))
print("Command: " + colored(resulting_command, 'cyan'))
if ask == True:
print("Execute the command? Y/n ==> ", end = '')
yolo = input()
print()
if yolo == "Y" or yolo == "":
subprocess.run(resulting_command, shell=True)
if shell == "powershell.exe":
subprocess.run([shell, "/c", resulting_command], shell=False)
else: #Unix based - /bin/bash, /bin/zsh: uses -c both Ubuntu and macOS should work, others might not
subprocess.run([shell, "-c", resulting_command], shell=False)