Cisco ios command to know L2 and L3 device - cisco

Looking at IOS / IOS XE v15.x+ devices and trying to figure out a command that helps to understand whether it is an L2 or L3 device.
There are various options but those are not the most optimum ones like
checking if the device supports vlans or lacp and taking a judgment over it.
I am looking for a command that tells me directly about it being an l2/l3 switch/router from Cisco IOS.

May be
aaaaa#sh ver | i uptime
And parse output
Or if you use CDP:
Router#show cdp neighbors
Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge
S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone
Device ID Local Intrfce Holdtme Capability Platform Port ID
sw1 Fas 0/6 178 S I WS-C3560- Fas 0/9
sw1 Fas 0/1 171 S I WS-C2960- Fas 0/24

Related

ERROR:9:42: Syntax error: Operator expected prolog

So, I am trying to create a microworld for my prolog assignment and whenever I try to consult the .pl file it gives me a bunch of errors which are basically all the same as they start with ""ERROR:softwares_and_hardwares.pl:9:42: Syntax error: Operator expected"" and in the next line, the same ones with the numbers changed. Can someone help me figure out the error? Please and thank you. Below here is the knowledge base KB code of the following.
% File: softwares_and_hardwares.pl
% Line: casualling differentiating on various types of software and hardwares of the computers.
% ------------------------------------------------------------------------------------
% Predicates based on facts and knowledge ...
% ------------------------------------------------------------------------------------
% software(sfname(S),typeofsf(T),Accesstosrc(A),licensefee(L) :: S is the name of the software where T is determined as which type of software and A as if it the sources is accessible to everyone and L is license fee (if any)
software(sfname(MacOS),typeofsf(Operating System software),Accesstosrc(No-its Proprietory Software),licensefee(paid-when buying the PC)).
software(sfname(Linux),typeofsf(Operating System software),Accesstosrc(Yes-its open-source Software),licensefee(free-easily available on internet)).
software(sfname(Avast Security),typeofsf(Security Application software),Accesstosrc(No-its Proprietory Software),licensefee(paid-subsicrption due after every certain period of time)).
software(sfname(Mozilla Firefox),typeofsf(Web Application software),Accesstosrc(Yes-its open-source Software),licensefee(free-easily downloadable from the internet)).
% hardware(hdname(H),typeofhd(D),hdtype(P)) :: H is the name of the hardware used in the computers where D is deteremined as which type of hardware and P as if the hardware is an external or internal type of device.
hardware(hdname(Printer),typeofhd(Output Device),hdtype(external)).
hardware(hdname(RAM-Random Access Memory),typeofhd(Internal component),hdtype(internal drive)).
hardware(hdname(Keyboard),typeofhd(Input Device),hdtype(external)).
hardware(hdname(PCI-Peripheral Component Interconnect aka USB ports),typeofhd(Input Device),hdtype(Internal)).
% Predicates based on Rules (indirectly on the above stated commands)...
% ------------------------------------------------------------------------------------
% Rules for listing softwares and hardwares and Computer-components
%------------------------------------------
% softwares :: all those items listed are softwares
softwares :- software(Name,_,_,_), write(Name), nl, fail.
softwares.
% hardwares :: all those items listed are hardwares
hardwares :- hardware(Name,_,_), write(Name), nl, fail.
hardwares.
% computer-components :: all those items listed are computer-components
computer-components :- softwares, hardwares.
% Rules for finding special components of the computer
%------------------------------------------
% Keyboard(Name) :: Name is a external hardware
Keyboard(Name) :- hardware(Name,_,hdtype(external)).
% Linux(Name) :: Name is a operating system software.
Linux(Name) :- software(Name,typeofsf(Operating System software),_,_).
% Mozilla Firefox(Name) :: Name is a web application software
Mozilla Firefox(Name) :- software(Name,typeofsf(Web Application software),_,_).
% Printer(Name) :: Name is a output device
Printer(Name) :- hardware(Name,typeofhd(output device),_).
% MacOS(Name) :: Name is a opertaing system software
MacOS(Name) :- software(Name,typeofsf(Operating System software),_,_).
% RAM-Random Access Memory(Name) :: Name is a internal component.
RAM-Random Access Memory(Name) :- hardware(Name,typeofhd(Internal component),_).
% Avast Security(Name) :: Name is a security application software
Avast Security(Name) :- software(Name,typeofsf(Security Application software),_,_).
% PCI-Peripheral Component Interconnect aka USB ports(Name) :: Name is a internal hardware.
PCI-Peripheral Component Interconnect aka USB ports(Name) :- hardware(Name,_,hdtype(internal).
%------------------------------------------```
On line 8 (the first code line after the comments) you have this
Operating System software
No-its Proprietory Software
paid-when buying the PC
This is not Prolog code. I can imagine that you miss single/double quotes around each of these "things".

How to identify identical USB dongles connected at the same time to an USBhub

I have an USBhub (D-Link DUB-H7) connected to my laptop with Windows 10. Connected to the hub are 4 identical PEAK dongles to talk to a CANbus. Now, my problem is to programmatically identify these 4 seperate dongles and knowing which one is which. The dongles are fixed in the hub.
To start I downloaded and installed USBDeview to view my devices. In the program I can see my 4 PCAN-USB dongles and I can see that their Instance ID are different. That's good, now I have my identifier. However, once I try to get the ID's with Python things aren't looking good. This is my following test program:
import win32com.client
wmi = win32com.client.GetObject("winmgmts:")
input("Connect the hub")
dongle_list = [(usb.name, usb.DeviceID) for usb in wmi.InstancesOf("Win32_USBHub")]
input("Disconnect the hub")
nod_list = [(usb.name, usb.DeviceID) for usb in wmi.InstancesOf("Win32_USBHub")]
diff = list(set(dongle_list) - set(nod_list))
for d in diff:
print(d)
Running this gives me only 2 new usb devices and the ID's point to the USBhub rather than the dongles connected to the hub. I also tried with wmi.InstancesOf("CIM_USBDevice") but the result stays the same.
('Generic USB Hub', 'USB\\VID_05E3&PID_0608\\5&4A43CD6&0&4')
('Generic USB Hub', 'USB\\VID_05E3&PID_0608\\6&9EBFB9C&0&4')
So how can I retrieve the usb information of the devices connected to the USBhub using Python or powershell/cmd invoked by Python?
Another route I was thinking I could take is by using port identifiers. If I disconnect a dongle I can see that it was connected to Port_#0001.Hub_#000x, where is x is a positive integer. So maybe I could poll the port to see if the dongle is connected and then I too know which one is which (dongles are fixed in the hub). Although I think that using the Instance ID is more foolproof.
I ended up creating a powershell command and invoke that using Python. I noticed however that the InstanceID's are hardware addresses of the the USBhub and not the dongles.
I also noticed that the dongles sometimes switch their addresses related on how they were connected. So I also needed to disable them and enable them again in the order I want.
This is what I have now:
poll_cmd = """
$ret = (Get-PnpDevice | ? {($_.description -like "*pcan*") -and ($_.status -eq "ok")} | sort instanceid).instanceid;
$ret | % {Disable-PnpDevice $_ -Confirm:$False};
$ret | % {Start-Sleep -Seconds 1; Enable-PnpDevice $_ -Confirm:$False};
$ret
"""
usbs = (
subprocess.check_output(["powershell.exe", poll_cmd])
.decode()
.strip()
.split("\r\n")
)
usbs holds the list of usb dongles I'm interested in.
However this gave me one more problem: UAC. I need admin rights to enable the usbs. And used the top answer from Request UAC elevation from within a Python script? to give my program admin rights.

What types of bluetooth devices exist?

I'm using bluetoothctl to check for device type (I need it to choose the right icon for the bluetooth device). I have found that so far exists phone and audio-card. Do you know where to find a list of all those types of bluetooth devices?
This is the output from bluetoothctl, and there is a field with Icon. All posible types from that field is what I'm interested in.
Device XX:XX:XX:XX:XX:XX (public)
Name: XXXXX
Alias: XXXXX
Class: 0x00240408
Icon: audio-card
The answer to this can be found by browsing the source of the bluez bluetooth stack in src/dbus-common.c.
At the time of writing this answer, the complete list is:
"audio-card"
"audio-headphones"
"audio-headset"
"camera-photo"
"camera-video"
"computer"
"input-gaming"
"input-keyboard"
"input-mouse"
"input-tablet"
"modem"
"multimedia-player"
"network-wireless"
"phone"
"printer"
"scanner"
"unknown"
"video-display"
With the help of gtk3-icon-browser I noticed that the Icon type from bluetoothctl corresponds with the theme-default icons.

How to use HM-10/HC-08 in AT command mode?

I have bought HM-10 but its name is showing HC-08. I want to know how will i use it in AT mode. I have arduino mega. I am using HC-05 in AT mode by setting 34th(key) pin high.
For HM-10 or HC-08 there are several AT commands lists (access via serial).
For example for the HC-08:
AT responds OK
AT + BAUDx responds with OKn where x is 1 - n is 1200, 2 - 2400, 3 -
4800, 4 - 9600 (default), 5 - 19200, 6 - 38400, 7 - 57600, 8 -
115200.
Note: module must be reset after power-on for the new serial port baud rate to take effect.
AT + NAME name responds OKsetname - name is the Bluetooth device name to be set and must be 13 characters or fewer. Retained across power offs.
Note: module must be reset after power-on for the new device name to take effect.
You can find complete lists if you search to "HC-08 AT commands list" in the web.

Raspberry Pi, JCblock and Trendnet TFM 561U. Dosen't seem to work

The dev suggested to ask here to get more help.
This is what is happening, I bought a Raspberry Pi (second one, I know how to handle them, and I'm used to apt and ssh) and a Trendnet TFM561U modem, downloaded NOOBS, did the initial setup with an extra in the shape of Webmin. So far aside from Webmin, it's a vanilla Raspbian. I then downloaded JCblock ( http://sourceforge.net/projects/jcblock/ ) and following the instructions here http://weeklytechforum.com/2013/03/28/block-unwanted-calls-with-a-raspberry-pi/ I edited the files that needed editing and finally compiled. I found out what serial port the modem was using (same as the guide! cool) and finally proceeded to test it. That's where the trouble started.
The differences between me and the guide is that I'm in Italy, so the dev of JCblock made me edit the source with a few extra lines of code to talk to the modem... now it's a great time to point out that while I can edit code and recompile it, this is C and I absolutly have no clue about it, knowing just some basics from Pascal and a bit of Visual Basic, so in the end I'm editing the source blindly, just guessing where things need to go. Anyway the edits are to send the Country Code command: AT+GCI=59\r and Caller ID command: AT+VCID=1\r but we do not seem to be geting caller ID data from the modem.
What I'm expecting to see: I call with my cellphone (and that number is in the blacklist) the Raspberry doesn't make the phone ring, or in case of wrong configuration of the blacklist I get some output that will show a call not filtered.
What I get: the phone rings, the modem data light flashes, the program dosen't output anything.
Any help will be appreciated, thanks.
EDIT:
So, I went ahead and used NCID to see what would happen.
As it generates a cornucopia of data, I think it can be useful
Started: 10/27/2014 22:24:54
Server: ncidd (NCID) 1.0
API: 1.0 Feature Set 1 2 3 4
Command line: ncidd
-Dv3
Logfile: /var/log/ncidd.log
Processed config file: /etc/ncid/ncidd.conf
Verbose level: 3
Configured to send 'cidlog' to clients.
Configured to send 'cidinfo' to clients.
Helper tools:
/usr/bin/cidupdate
/usr/bin/ncidutil
Processed alias file: /etc/ncid/ncidd.alias
Alias Table:
Number of Entries: 1
Leading 1 from a call required in an alias definition
Calls in the blacklist file will be terminated
Processed blacklist file: /etc/ncid/ncidd.blacklist
Blacklist Table:
Number of Entries: 12
Calls in the whitelist file will not be terminated
Processed whitelist file: /etc/ncid/ncidd.whitelist
Whitelist Table:
Number of Entries: 0
CID logfile: /var/log/cidcall.log
CID logfile maximum size: 110000 bytes
Data logfile not present: /var/log/ciddata.log
Maximum number of clients/gateways: 25
Telephone Line Identifier: -
TTY port opened: /dev/ttyACM0
TTY port speed: 19200
TTY lock file: /var/lock/LCK..ttyACM0
TTY port control signals enabled
CallerID from AT Modem and optional gateways
Handles modem calls without Caller ID
Sent Modem 20 of 20 characters:
AT Z S0=0 E1 V1 Q0
Modem response: 26 characters in 1 read:
AT Z S0=0 E1 V1 Q0
OK
Try 1 to init modem: return = 0.
Modem initialized.
Sent Modem 6 of 6 characters:
ATI3
Modem response: 39 characters in 1 read:
ATI3
CX93001-EIS_V0.2002-V92
OK
Sent Modem 9 of 9 characters:
AT+GCI?
Modem response: 27 characters in 1 read:
AT+GCI?
+GCI: 59
OK
Sent Modem 13 of 13 characters:
AT+FCLASS=?
Modem response: 32 characters in 1 read:
AT+FCLASS=?
0,1,1.0,8
OK
Sent Modem 11 of 11 characters:
AT+VCID=1
Modem response: 17 characters in 1 read:
AT+VCID=1
OK
Modem set for CallerID.
Hangup option set to hangup on a blacklisted call
Modem used for CID and to terminate calls
Network Port: 3333
Debug Mode
Not using PID file, there was no '-P' option.
Modem is fd 4
NCID connection socket is sd 5 pos 1
RING
CIDINFO: *LINE*POTS*RING*1*TIME*22:25:21*
CIDINFO: *LINE*POTS*RING*0*TIME*22:25:33*
What I can tell from this, is that it should be properly set up to hang up for a blacklisted number (my cellphone, for testing purposes) and that no caller id gets to the software. About that, it's important to point out how we have a mess of different phones (make, model, cordless, wired...) at home, and all of them do show 1 missed call from me. So at least I can confirm that the caller id is being sent.
I looked on Trendnet TFM561U description page and Amazon for this modem and didn't see "caller ID" in the description.
Your modem looks like it has Caller ID because its response to the activate caller ID command is "OK":
AT+VCID=1
OK
But looking at
Testing Modem Caller ID Support with HyperTerminal (or Putty) page
However, if, in step 8), the modem responded with "OK", then you probably have the correct string. In this case, either your phone line does not have caller id enabled (this can be tested with a hardware caller id device), or the modem does not support caller id. The latter is possible even if, in step 8), the modem responded with "OK", since many modems use the same firmware regardless of whether the modem contains the appropriate caller id hardware. In other words, many modems don't know whether they have caller id support!
I would say return your modem and get one that has "caller ID" in the description.

Resources