04-05-2011
Bash: executing a command based on organized output
Just learning scripting. I need to remove duplicate managed printers using lpadmin. I have the following script (it's rough and probably a better way to do it) that returns the values as IP (column 1) Printer Name (column 2).
command:
lpstat -v | grep -E '192.168.*.20|192.168.*.21|192.168.*.22|192.168.*.23|192.168.*.24|192.168.*.25|192.168.*.90' | awk '{print $4,$3"/"}' | sort | awk -F "/" '{print $3,$4}'
output:
192.168.10.20 MX4100N:
192.168.24.21 AR208D:
192.168.24.22 mcx_5:
192.168.24.22 mcx_8:
192.168.24.22 M620N:
192.168.24.23 mcx_6:
192.168.24.23 M363N1:
192.168.24.24 mcx_7:
192.168.24.24 M363N2:
192.168.24.25 M363N3:
192.168.24.90 mcx_0:
192.168.24.90 mcx_1:
192.168.24.90 mcx_2:
192.168.24.90 mcx_3:
192.168.24.90 mcx_4:
What I would like to do is set up a loop that tells lpadmin to remove duplicate IP based printers based on printer name. I want to keep the highest value where they are mcx_* (managed printer) and if there is a named printer with the same IP keep the mcx printer. So from the above output I want to send the following commands to clean up the machine.
lpadmin -x M620N
lpadmin -x M363N1
lpadmin -x M363N2
lpadmin -x mcx_0
lpadmin -x mcx_1
lpadmin -x mcx_2
lpadmin -x mcx_3
lpadmin -x mcx_5
This would result in the following list of installed printers.
192.168.10.20 MX4100N:
192.168.24.21 AR208D:
192.168.24.22 mcx_8:
192.168.24.23 mcx_6:
192.168.24.24 mcx_7:
192.168.24.25 M363N3:
192.168.24.90 mcx_4:
I was thinking of assigning the output to an array and using a loop but can't wrap my brain around how to accomplish this. Does this make sense? I think I'm confusing myself trying to explain it!
10 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
I have a command that when ran it will have an output such as
string LongerString
string2 longerString2
More MoreStrings
seperated by tabs. The command lists domains and their accounts set up in my server admin software (interworx).
The end result will be that it will run rsync for... (2 Replies)
Discussion started by: sweede
2 Replies
2. UNIX for Dummies Questions & Answers
How do i tell my bash shell script to test the output of the command i'm using?? I want this script to look for lines not equal to 1 then let me know..
$ cat blah ; echo ---- ; cat blah.sh
1 fe
1 fi
1 fo
0 fum
1 blahda
1 blah
0 blahh
1 bla
1 bl
1 blahhh
----
#!/bin/bash
while... (1 Reply)
Discussion started by: phpfreak
1 Replies
3. Shell Programming and Scripting
Hi all. I am using procmail to deliver an email to a script I am developing. Procmail delivers the email to the script on standard input. I imagine this is the same as piping input from a command into the script. Hence I've been testing my script by running
echo 'test' | sms-autosend-backup.sh
... (2 Replies)
Discussion started by: akindo
2 Replies
4. Red Hat
I am attempting to create a script that would allow me to list all the instances associated with a DB2 and then prompt the user to choose which one to issue the db2profile command against. I use the db2 command db2ilist to get a list of the instances for a particular server, but the number of... (1 Reply)
Discussion started by: slatoms
1 Replies
5. Shell Programming and Scripting
I am attempting to create a script that would allow me to list all the instances associated with a DB2 and then prompt the user to choose which one to issue the db2profile command against. I use the db2 command db2ilist to get a list of the instances for a particular server, but the number of... (7 Replies)
Discussion started by: slatoms
7 Replies
6. Shell Programming and Scripting
Okay, so I have a file containing line after line of three digit numbers. I need a script that does an action based on the last two numbers in this list.
So.... To get the last two numbers, I can have the script do
tail -2 filename.txt
But where I run into trouble is as follows. If... (6 Replies)
Discussion started by: UCCCC
6 Replies
7. Shell Programming and Scripting
Hello.
This part of script do nothing but no complain.
Here the directory content :
The script run by root
cd /root
CMD="rmdir -p -v --ignore-fail-on-non-empty .ssh"
echo $CMD
$CMD
The ouput
linux:~/bin # ./test_05
rmdir -p -v --ignore-fail-on-non-empty .ssh
rmdir: removing directory,... (3 Replies)
Discussion started by: jcdole
3 Replies
8. UNIX for Dummies Questions & Answers
Hi All,
Just have a requirement, I am executing a bash shell script, my requirement is to catch the pid and job name to a txt file in the same directory, is there anyway to do it? please help me out.
Regards
Rahul
---------- Post updated at 08:42 AM ---------- Previous update was at... (2 Replies)
Discussion started by: rahulkalra9
2 Replies
9. Shell Programming and Scripting
Hello, I want to run a field from an awk command through a command in bash.
For example my input file is
1,2,3
20,30,40
60,70,80
I want tot run $2 thought the command
date +%d/%m/%y -d"01/01/15 + $2 days -1 day"
and get the output
1,02/01/15,3
20,30/01/15,40
60,11/03/15,80
... (2 Replies)
Discussion started by: garethsays
2 Replies
10. Shell Programming and Scripting
I want to run commands inside a bash script.
An example is
I want to pass the command in a string as regexp as an argument to the script, then run sed on the bash variable
sed.sh regexp
sed.sh "-i \"s/<p>//g\""
then call
sed "$regexp" $fl (3 Replies)
Discussion started by: Kangol
3 Replies
LEARN ABOUT DEBIAN
tgt-setup-lun
tgt-setup-lun(8) System Manager's Manual tgt-setup-lun(8)
NAME
tgt-setup-lun - creates a target, adds a device to the target and defines initiators that can connect to the target
SYNOPSIS
tgt-setup-lun -d device -n target_name [initiator_IP1 initiator_IP2 ...] [-h]
DESCRIPTION
Starts tgtd if necessary and creates a target according to the supplied target_name. The format of the target name is as follows:
iqn.2001-04.com.<hostname>-<target_name> The target name must be unique.
The script then adds the requested device to the target. If specific IP addresses are defined, it adds them to the list of allowed initia-
tors for that target. If no IP addresses is defined, it defines that the target accepts any initiator.
EXAMPLES
Create a target that uses /dev/sdb1 and allows connections only from 192.168.10.81:
tgt-setup-lun -d /dev/sdb1 -n my_target 192.168.10.81
Create a target that uses /dev/sdb1 and allows connections only from 192.168.10.81 and 192.168.10.82:
tgt-setup-lun -d /dev/sdb1 -n my_target 192.168.10.81 192.168.10.82
Create a target that uses /dev/sdb1 and allows connections from any initiator:
tgt-setup-lun -d /dev/sdb1 -n my_target
Display help:
tgt-setup-lun -h
AUTHOR
Written by Erez Zilber
REPORTING BUGS
Report bugs to <stgt@vger.kernel.org>
COPYRIGHT
Copyright (C) Voltaire Ltd. 2008.
tgt-setup-lun(8)