Étiquette : python

18 juillet 2017 /

J’ai trouvé un petit script nommé G213Colors, pour modifier les couleurs des LED d’un clavier Logitech G213 Prodigy.

En pré-requis, avec faut avoir le module Python pour gérer les ports USB d’installé, et bien sur un clavier G213:

sudo apt-get install -y python-usb python3-usb

On télécharge le script :

wget https://raw.githubusercontent.com/SebiTimeWaster/G213Colors/master/G213Colors.py

Le script doit être exécuté avec les droits root pour pouvoir accéder au périphérique (ID 046d:c336 Logitech, Inc.).

Si on exécute le script sans argument, c’est l’aide qui s’affichera:

sudo python G213Colors.py

G213Colors - Changes the key colors on a Logitech G213 Prodigy Gaming Keyboard

Options:
-c Set the standard color (white)
-c <color> Set a custom color
-c <color1> ... <color5> Set custom colors for the 5 segments
-b <color> <time> Sets a color breathing animation
-x <time> Sets a color cycling animation

Please note:
* Color is a hex encoded color in the format RRGGBB
i.e. ff0000 is red, 00ff00 is green and so on,
abbreviated formats are not allowed
* Time is in milliseconds, range: 32 - 65535

Changer la couleur des touches en blanc ( le blanc a été fixer sur la couleur ffb4aa):

sudo python G213Colors.py -c

qui est similaire à

sudo python G213Colors.py -c ffb4aa

Changer la couleur de toutes les touches en rouge (ff0000):

sudo python G213Colors.py -c ff0000

Pour un effet « pulsation » rouge sur tout le clavier avec un délais de 6000 millisecondes:

sudo python G213Colors.py -b ff0000 6000

Rotation avec toutes les couleurs et un délais de 6000 millisecondes entre chaque transition:

sudo python G213Colors.py -x 6000

Changer les couleurs des 5 parties du clavier:

sudo python G213Colors.py -c 33ffff 00ff00 ff0000 ff6600 ff00cc

Cela ne fonctionne cependant pas pour les champs 4 et 5 qui vont conserver leur couleur.

Par exemple, pour les couleurs de la France, on commence par fixer les champs 4 et 5 en rouge:

sudo python G213Colors.py -c ff0000

Puis on fixe la couleurs des champs 1, 2 et 3 en bleu et blanc:

sudo python G213Colors.py -c 0000ff 0000ff ffb4aa ff0000 ff0000

ou

sudo python G213Colors.py -c 0000ff ffb4aa ffb4aa ff0000 ff0000

Personnellement j’utilise:

sudo python G213Colors.py -c 0000ff 0000ff 0000ff ff0000 ff0000

Si les couleurs ne veulent plus changer, il suffit de débrancher le clavier, puis de le rebrancher.

Pour l’activer au démarrage, on commence par déplacer le script dans un répertoire ou il ne sera pas supprimé par erreur:

sudo mkdir /usr/local/g213colors
sudo mv G213Colors.py /usr/local/g213/

On peut maintenant l’activer au démarrage:

sudo vi /etc/rc.local

Puis on ajoute ces lignes, en laissant bien à la fin la ligne « exit 0 »:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

#Clavier G213
python /usr/local/g213/G213Colors.py -c 0000ff 0000ff 0000ff ff0000 ff0000

exit 0

Et voila!

Source

20 février 2017 /

Un équivalent de « bash -x » pour Python:

python -m trace -t script.py

1 mai 2016 /

Telnet, (depuis un serveur distant)

telnet 192.168.0.14 20000

Si le port est ouvert:

Trying 192.168.0.14...
Connected to entropia (192.168.0.14).
Escape character is '^]'.

Si le port est fermé (ou service non démarré):

Trying 192.168.0.14...
telnet: connect to address 192.168.0.14: Connection refused
telnet: Unable to connect to remote host: Connection refused

Netstat, (pour tester en local)

netstat -paunt | grep 3306; echo $?

Si le port est ouvert:

tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      1979/mysqld
0

Si le port est fermé (ou service non démarré):

1

Netcat, (depuis un serveur distant)

nc -v -z 192.168.0.14 3306; echo $?

Si le port est ouvert:

Connection to 192.168.0.14 3306 port [tcp/mysql] succeeded!
0

Si le port est fermé (ou service non démarré):

nc: connect to 192.168.0.14 port 3306(tcp) failed: Connection refused
1

nc  192.168.0.14 3306< /dev/null ; echo $?

Si le port est ouvert:

4
5.1.73▒d))4f*<,i▒N*'%#~rC8/#`0

Si le port est fermé (ou service non démarré):
1

Wget pour tester un serveur web, (depuis un serveur distant)

wget -qO- 192.168.0.14:80 ; echo $?

wget -q --spider 192.168.0.14:80 ; echo $?

Curl, (depuis un serveur distant)

curl telnet://192.168.0.14:22

Si le port est ouvert, la commande restera bloquée car elle attend que l’on saisisse quelque chose. ctrl+c pour sortir.

Si le port est fermé:

curl: (7) couldn't connect to host

Bash, (depuis un serveur distant)

timeout 1 bash -c 'cat < /dev/null > /dev/tcp/192.168.0.14/22' ; echo $?

Si le port est ouvert:
0
Si le port est fermé:

bash: connect: Connexion refusée
bash: /dev/tcp/192.168.0.14/22: Connexion refusée
1

Nmap, (depuis un serveur distant)

nmap -p 80 192.168.0.14

Si le port est ouvert:

Starting Nmap 5.51 ( http://nmap.org ) at 2016-03-29 10:00 CEST
Nmap scan report for entropia.local (192.168.0.14)
Host is up (0.00068s latency).
PORT   STATE SERVICE
80/tcp open  http
MAC Address: 00:50:56:01:27:55 (VMware)
Nmap done: 1 IP address (1 host up) scanned in 0.12 seconds

Si le port est fermé:

Starting Nmap 5.51 ( http://nmap.org ) at 2016-03-29 10:06 CEST
Nmap scan report for entropia.local (192.168.0.14)
Host is up (0.00045s latency).
PORT   STATE  SERVICE
80/tcp closed http
MAC Address: 00:50:56:01:27:55 (VMware)
Nmap done: 1 IP address (1 host up) scanned in 0.10 seconds

Pour tester plusieurs port en même temps:

nmap -p 22,1944,20000 192.168.0.14

Python, (depuis un serveur distant)

python
import socket
clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
clientsocket.connect(('192.168.0.14' , 80))
clientsocket.sent('\n')

Si le port est ouvert, vous arriverez à faire un « clientsocket.sent(‘\n’) » (qui vous retournera surement cette une erreur):
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: '_socketobject' object has no attribute 'sent'

Si le port est fermé, au moment du « clientsocket.connect((‘192.168.0.14’ , 80)) » :
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1, in connect
socket.error: [Errno 111] Connection refused