How to create an executable bash script for these commands?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to create an executable bash script for these commands?
# 1  
Old 05-25-2014
How to create an executable bash script for these commands?

I wish to create an executable bash script that will run the following commands as root, that is, using sudo su
Code:
iptables-save | awk '/^[*]/ { print $1 } 
                     /^:[A-Z]+ [^-]/ { print $1 " ACCEPT" ; }
                     /COMMIT/ { print $0; }' | iptables-restore

My first attempt at bash scripting is as follows:
Code:
#!/bin/bash
sudo su
iptables-save | awk '/^[*]/ { print $1 } 
                     /^:[A-Z]+ [^-]/ { print $1 " ACCEPT" ; }
                     /COMMIT/ { print $0; }' | iptables-restore
sleep 3;
exit 0

Could someone correct the above and make it workable?
# 2  
Old 05-25-2014
Save this as a regular text file, from within your favorite text editor, such as gedit, leafpad, eclipse, or alike...
Code:
#!/bin/bash
iptables-save | awk '/^[*]/ { print $1 } 
                     /^:[A-Z]+ [^-]/ { print $1 " ACCEPT" ; }
                     /COMMIT/ { print $0; }' | iptables-restore
sleep 3;
exit 0

Right click the file, open properties, switch the register and set 'execute' flag to actvie (or to all users).

Since a regular user, cannot save a script in /usr/bin, (or just /bin), you either can do:
Code:
sudo cp ./myscript /usr/bin/

OR
# Assuming the file and you are in your $HOME directory
Code:
mv ./myscript ./bin

Once copied, it's 'public' (on your computer) availble, and can be executed like:
Code:
sudo myscript

If you have moved the file to your custom bin folder ($HOME/bin is a default location), you have to call it like:
Code:
sudo $(which myscript)

sudo su is unnesecary and not recomended.

hth


EDIT:
Or within the script, simply:
Code:
sudo iptables-save | awk '......


Last edited by sea; 05-25-2014 at 08:42 AM..
This User Gave Thanks to sea For This Post:
# 3  
Old 05-25-2014
How do you transform the following into a single line?
Code:
iptables-save | awk '/^[*]/ { print $1 } 
                     /^:[A-Z]+ [^-]/ { print $1 " ACCEPT" ; }
                     /COMMIT/ { print $0; }' | iptables-restore

Does it look like this?
Code:
iptables-save | awk '^[*] { print $1 } ^:[A-Z]+ [^-] { print $1 " ACCEPT" ; } COMMIT { print $0; }' | iptables-restore

I removed the "/" wherever it appears. Am I correct to state that the "/" is used to break a long line into smaller lines?

What I plan to do is:
Code:
#!/bin/bash
iptables-save | awk '^[*] { print $1 } ^:[A-Z]+ [^-] { print $1 " ACCEPT" ; } COMMIT { print $0; }' | iptables-restore
sleep 3;
exit 0

Save the above and call it cleariptables.sh. I will set it as executable.

It will be placed in a folder called bin in the following path: /home/bonafide/bin/

(bonafide is the username)

I will create a shortcut to cleariptables.sh on the desktop. The contents of the shortcut will be:
Code:
[Desktop Entry]
Version=1.0
Type=Application
Terminal=true
Icon[en_US]=nm-device-wired
Name[en_US]=ClearIPtables
Exec=gksudo /home/bonafide/bin/cleariptables.sh
Comment[en_US]=Flush iptables filters
Name=ClearIPtables
Comment=Flush iptables script
Icon=nm-device-wired

Whenever I click on the desktop shortcut, I will be prompted to enter the password and the script will run.
# 4  
Old 05-25-2014
Quote:
Originally Posted by thixeqi
I removed the "/" wherever it appears. Am I correct to state that the "/" is used to break a long line into smaller lines?
No, its the '\' to break a line.

Cant help you with the awk part, use it too rarley.

But by making a single line, i was refering to the (your prior) usage of:
Code:
sudo su
iptables-save...

As the syntax goes like:
Code:
sudo command
# OR
su -c "command"

Rest looks fine.
But i wouldnt execute the script from GUI (icon) as long you're unsure if it works.

hth
# 5  
Old 05-25-2014
Quote:
Originally Posted by sea
No, its the '\' to break a line.
Thanks for the tip.

If '\' is used to break lines, then there is none in the code.

Could you help me transform the following 3 lines into a single line please?
Code:
iptables-save | awk '/^[*]/ { print $1 } 
                     /^:[A-Z]+ [^-]/ { print $1 " ACCEPT" ; }
                     /COMMIT/ { print $0; }' | iptables-restore

But i wouldnt execute the script from GUI (icon) as long you're unsure if it works.[/QUOTE]

I did run the script but in a terminal using sudo su. I had to copy and paste line by line. The script works. I found the script using Google. (I am sorry I am unable to post the URL here as I have less than 5 posts.)
# 6  
Old 05-25-2014
Again, use either sudo OR su.

It is recomended to 'not' use sudo or su inside the script.
As once the script is executeable, it becomes an 'application' or 'command', and thus can be sudo'd.
-> sudo $(which cleariptables.sh)

Quote:
I did run the script but in a terminal using sudo su. I had to copy and paste line by line. The script works. I
If you copy line by line, why do you write a script?
Execute the script to try.
Smilie


The $(which APPNAME) part is required, as the root user, which you become upon su/sudo, dont have $HOME/bin/cleariptables.sh available, so you need to invoke which to supply, or straighly use, the full path to the script.
NOTE: The $(which APPNAME) part will NOT work upon su -c '$(which appname)', as this one will execute the which as root, which wont find the /home/bonafide/bin dir, despite the script in that.

Can we cosider "How to make an executable bash script" as done,
while i now want to know, is there an error in the script?

Or why do you want to make the awk a one liner?
This doesnt help read ability, and there is no use to it.

Honestly, and i dont want to be mean, 'one-liners' are for 'short' commands,pipes or very simple structures, and the more complex they are, the more advanced one should be.
Prior to attempt one liners, i highly recomend to write code that is properly syntaxed and uses idention. (regarding the script, this is achieved, but since you copied it, doesnt count)

What i wanted to say is:
Once one understands what the code does, one can go for one-liners, otherwise one just aims for unreadable / unfunctional code. (in harsh words)
Until then, one should leave one-liners to those in the know / with the skill.

To understand oneliners (get familiar to them), search for them and split them up into working! multi-liners.

Have a nice sunday!

Last edited by sea; 05-25-2014 at 10:19 AM..
# 7  
Old 05-25-2014
What's the purpose of making it a single line?

Regards,
Alister
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Bash script make itself executable

Is there a way to make this make itself executable? Thanks. :-) cat > somescript.sh << \EOF #!/bin/bash block_count=$(sudo tune2fs -l /dev/sda1 | awk '/^Block count:/ {print $NF}') reserved_block_count=$(sudo tune2fs -l /dev/sda1 | awk '/^Reserved block count:/ {print $NF}') perl -e... (4 Replies)
Discussion started by: drew77
4 Replies

2. UNIX for Beginners Questions & Answers

How can i create a script that will ssh a device and type some commands?

Hi Guys, this is the scenario: ubuntu pc and I have 10 wireless devices that I need to check their firmware version. I would like to create a script that it will ask me IP, after I enter it, I hit enter then it will show me the version of the firmware. this is what i do. ssh... (9 Replies)
Discussion started by: gabak
9 Replies

3. Shell Programming and Scripting

Making bash script allways executable when transfer ?

Does it possible to make some bash script automatic to be a executable when transfered to another pc...? (5 Replies)
Discussion started by: tomislav91
5 Replies

4. Shell Programming and Scripting

Create a UNIX script file with multiple commands

Hi Good morning all, I want to create script file with multiple commands. For ex: pmrep connect is one of the command to connect to repository. pmrep objectexport is another command to export objects to a file. These commands should run sequentially.But when i try to execute this, the first... (4 Replies)
Discussion started by: SekhaReddy
4 Replies

5. Shell Programming and Scripting

How to produce a executable Oracle script from bash script?

Hi here's my code ${ORACLE_HOME}/bin/sqlplus /nolog <<!EOF --step 5 create db script start set feedback off set heading off set echo off conn / as sysdba spool ${ORACLE_SID}_db_link.sql SELECT 'CREATE '||DECODE(U.NAME,'PUBLIC','public ')||'DATABASE LINK '||CHR(10)... (2 Replies)
Discussion started by: jediwannabe
2 Replies

6. UNIX for Dummies Questions & Answers

Running Executable in Bash Script

Hey guys, so I've been trying to write a bash script called runSorter.sh that runs an executable that also takes in some parameters and outputs the results to a text file. The executable, sorter, takes in a number parameter. I want to make it so that you can input as many number parameters into... (4 Replies)
Discussion started by: Duo11
4 Replies

7. Shell Programming and Scripting

Create GUI or Executable For Script

Hi all. I've got a unix script at work that I just got done with. Now they want me to write some simple way to run it on Windows. Right now we log into a Solaris server using Hummingbird Exceed to gain a terminal. Im thinking that there really isn't any good way to get Windows and the server... (5 Replies)
Discussion started by: Grizzly
5 Replies

8. Shell Programming and Scripting

How to make a script (Bash, KornShell, etc.) executable by mouse clicking?

Hello everybody, Is there any way to make a script (Bash, KornShell, etc.) executable by mouse clicking? For example you have a file myscript.sh, you run: $ chmod u+x myscript.sh Therefore it becomes executable and all you need is to run from the terminal: $./myscript.sh... (2 Replies)
Discussion started by: dariyoosh
2 Replies

9. Shell Programming and Scripting

Using tab in script to create file of commands

from CLI pressing Tab and character like a shows result of the commands starting with a, can i use this in a script too and post the results to a file? thanks (1 Reply)
Discussion started by: tvrman
1 Replies

10. Shell Programming and Scripting

Modifying simple commands to create a script

Can anyone direct me to a resource that explains scripting in simple terms? I have visited many sites and browsed this forum and have yet to find simple explanations. (8 Replies)
Discussion started by: rocinante
8 Replies
Login or Register to Ask a Question