Vraag & Antwoord

OS Linux

Bash command uitvoeren met variable

7 antwoorden
  • Ik heb een bestand (ip_tes) die 2 ipadressen bevat (192.168.1.42 en 192.168.1.58 ), dit bestand dient als test, het uiteindelijk te gebruiken bestand bevat ruim 200 adressen..... Ik heb een variable aangemaakt met: [code:1:69575d60b5] ip=\root\snmp\ip_test [/code:1:69575d60b5] als ik "cat $ip" doe geeft hij ook netjes: 192.168.1.42 192.168.1.58 So far so good...... Nu wil ik echter een command uitvoeren met gebruikmaking van deze variable, echter dan wordt het niet herkent als variable: [code:1:69575d60b5] [root@FC3 snmp]# snmpwalk -v2c -m ALL -c public $ip .1.3.6.1.2.1.25.6.3.1.2 snmpwalk: Unknown host (No such file or directory) [/code:1:69575d60b5] Daar waar "$ip" staat, vul je normaliter het ipadres in, als ik dat doe gaat het uiteraard goed. Ik vermoed dat ik iets moet gaan doen met een for/do loop, echter lukt het mij niet om daar een variable toe te wijzen waarbij de waardes in een bestand zijn...... Hoe pak ik dit het beste aan? Alle howto's gaan bij een for/do uit van een aantal waardes die je meegeeft, niet 1tje die ze uitleest uit een bestand....
  • Helpt http://mrlee.homelinux.net/basic-scripting.txt ?
  • [quote:a6d73f6804="MrLeeJohn"]Helpt http://mrlee.homelinux.net/basic-scripting.txt ?[/quote:a6d73f6804] Ondanks het feit dat de tutorial inderdaad zeer zinvol is, wordt er meer ingegaan op if/then.....Niet echt op the for/do options, met mijn simpele kennis van bash-scripting loop ik zeer waarschijnlijk vast op ergens een quote erbij of eraf...... [code:1:a6d73f6804] [root@FC3 snmp]# for ip in /root/snmp/ip_test ; do cat $ip ; done 192.168.1.42 192.168.1.58 [root@FC3 snmp]# [root@FC3 snmp]#for ip in /root/snmp/ip_test ; do snmpwalk -v2c -m ALL -c public $ip .1.3.6.1.2.1.25.6.3.1.2 ; done -bash: syntax error near unexpected token `do' [/code:1:a6d73f6804] Ik laat de syntax hetzelfde en vervang alleen het cat-command met het snmpwalk-command, en dan gaat het dus fout.... Edit: als ik de for/do structuur niet binnen 1 regelhou, maar echt stap voor stap doe, komt er dit uit: [code:1:a6d73f6804] [root@FC3 snmp]# for ip in /root/snmp/ip_test ; do > snmpwalk -v2c -m ALL -c public $ip .1.3.6.1.2.1.25.6.3.1.2 > done snmpwalk: Unknown host (No such file or directory) [/code:1:a6d73f6804]
  • Als het commando uitgebreid is (snmpwalk...ip) zet je het tussen ' en '. Werkt dat?
  • Nope, ticks/backticks en quotes geprobeerd: [code:1:ec2bf6cfdd] [root@FC3 snmp]# for ip in /root/snmp/ip_test ; do 'snmpwalk -v2c -m ALL -c public $ip .1.3.6.1.2.1.25.6.3.1.2' ; done -bash: snmpwalk -v2c -m ALL -c public $ip .1.3.6.1.2.1.25.6.3.1.2: command not found [root@FC3 snmp]# whereis snmpwalk snmpwalk: /usr/bin/snmpwalk /usr/share/man/man1/snmpwalk.1.gz [root@FC3 snmp]# for ip in /root/snmp/ip_test ; do '/usr/bin/snmpwalk -v2c -m ALL -c public $ip .1.3.6.1.2.1.25.6.3.1.2' ; done -bash: /usr/bin/snmpwalk -v2c -m ALL -c public $ip .1.3.6.1.2.1.25.6.3.1.2: Onbekend bestand of map [/code:1:ec2bf6cfdd] Als ik de variable $ip vervang door 1 van de 2 ip-adressen, dan werkt het wel.
  • Vraag het eens op het scriptdeel van forum.nedlinux.nl .
  • Ok, zal ik doen, kheb hem ook al uitstaan bij fedoraforum.org

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.