Der Titel fehlt. Schließlich müssen die heutigen Infrastrukturingenieure in der Lage sein, einen der Server per Knopfdruck zu bedienen. Ich habe versucht, das n-te Abkochpaket zu schnüffeln und das Dash-Button-Ereignis (Python auf Ubuntu) aufzunehmen, indem ich einfach die aws-Cli wie unten gedrückt habe.
--Amazon EC2 Dash Button (EC2 VM erstellen) --Aws Lambda Dash Button (lamda aufrufen)
Es ist eine Reproduktion des folgenden Referenzartikels. How I Hacked Amazon’s $5 WiFi Button to track Baby Data – Medium
Leicht verständlicher Kommentar. -> Amazon Dash Button Super Speed-Kommentar --Qiita
$ sudo apt-get install tcpdump python-crypto python-scapy
#Ich möchte Scapy verwenden, aber ich kann dies und das hinzufügen
$ pip show scapy
Name: scapy
Version: 2.2.3
Location: /usr/lib/python2.7/dist-packages
Requires:
#OK, wenn Scapy installiert werden kann
Erstellen und führen Sie dash-listen-1.py aus.
dash-listen-1.py
from scapy.all import *
def arp_display(pkt):
if pkt[ARP].op == 1: #who-has (request)
if pkt[ARP].psrc == '0.0.0.0': # ARP Probe
print "ARP Probe from: " + pkt[ARP].hwsrc
print sniff(prn=arp_display, filter="arp", store=0, count=10)
$ sudo python dash-listen-1.py
WARNING: No route found for IPv6 destination :: (no default route?)
#Da es bisher ausgegeben wurde, drücken Sie die Dash-Taste
ARP Probe from: XX:XX:XX:XX:XX:XX
ARP Probe from: XX:XX:XX:XX:XX:XX
ARP Probe from: XX:XX:XX:XX:XX:XX
^C[]
$
Jetzt können Sie die MAC-Adresse erhalten.
Fahren Sie mit der Erstellung und Ausführung von dash-listen-2.py fort.
dash-listen-2.py
from scapy.all import *
def arp_display(pkt):
if pkt[ARP].op == 1:
if pkt[ARP].psrc == '0.0.0.0': # ARP probe as your env
if pkt[ARP].hwsrc == 'XX:XX:XX:XX:XX:XX': # MAC address as your env
print "Amazon dash button Pushed."
sys.exit()
print sniff(prn=arp_display, filter="arp", store=0, count=10)
$ sudo python dash-listen-2.py
WARNING: No route found for IPv6 destination :: (no default route?)
#Da es bisher ausgegeben wurde, drücken Sie die Dash-Taste
Amazon dash button Pushed.
$
Jetzt können Sie die Veranstaltung abholen.
Amazon Web Service Dash button Nun, es ist endlich das Hauptthema, aber am Ende habe ich nur die ↑ "Drucken" Amazon Dash-Taste gedrückt. "" Mit dem schlampigen Befehl von aws cli.
Das Folgende sind die Annahmen, die vorbereitet wurden.
Erstellen Sie dash-ec2.py.
dash-ec2.py
from scapy.all import *
def arp_display(pkt):
if pkt[ARP].op == 1: #who-has (request)
if pkt[ARP].psrc == '0.0.0.0': # ARP probe as your env
if pkt[ARP].hwsrc == 'XX:XX:XX:XX:XX:XX': # MAC address as your env
print "Amazon EC2 dash button Pushed."
os.system("aws ec2 run-instances --image-id ami-0c11b26d --count 1 --instance-type t2.micro")
#Gerade hier hinzugefügt(Der Wortlaut des Drucks darauf wurde ebenfalls ein wenig geändert)
sys.exit()
print sniff(prn=arp_display, filter="arp", store=0, count=10)
Unten die Konsole vor der Ausführung (keine Instanz)
Dann ausführen.
$ sudo python dash-ec2.py
WARNING: No route found for IPv6 destination :: (no default route?)
#Da es bisher ausgegeben wurde, drücken Sie die Dash-Taste
Amazon EC2 dash button Pushed.
{
"OwnerId": "XXXXXXXXXXX",
"ReservationId": "XXXXXXXXXX",
"Groups": [],
"Instances": [
{
"Monitoring": {
"State": "disabled"
},
"PublicDnsName": "",
"RootDeviceType": "ebs",
"State": {
"Code": 0,
"Name": "pending"
},
"EbsOptimized": false,
"LaunchTime": "2016-12-06T11:48:25.000Z",
"PrivateIpAddress": "XXX.XXX.XXX.XXX",
"ProductCodes": [],
"VpcId": "vpc-XXXXXXXXXX",
"StateTransitionReason": "",
"InstanceId": "i-98abXXXXX",
"ImageId": "ami-0c11b26d",
...
Unten ist die Konsole nach der Ausführung. (Sie können mit nur einer Taste instanziieren! I-98abXXXXX)
Dieses Mal habe ich im Voraus eine normale Funktion namens Hallo Welt erstellt. Es wird nur "Hallo von Lambda" ausgegeben.
Erstellen Sie dash-lambda.py.
dash-lambda.py
from scapy.all import *
def arp_display(pkt):
if pkt[ARP].op == 1: #who-has (request)
if pkt[ARP].psrc == '0.0.0.0': # ARP probe as your env
if pkt[ARP].hwsrc == 'XX:XX:XX:XX:XX:XX': # MAC address as your env
print "Aws lambda button Pushed."
os.system("aws lambda invoke --invocation-type RequestResponse --function-name helloworld --region ap-northeast-1 --log-type Tail --payload '{}' output.txt")
#Gerade hier hinzugefügt(Der Wortlaut des Drucks darauf wurde ebenfalls ein wenig geändert)
sys.exit()
print sniff(prn=arp_display, filter="arp", store=0, count=10)
Dann ausführen.
$ sudo python dash-lambda.py
WARNING: No route found for IPv6 destination :: (no default route?)
#Da es bisher ausgegeben wurde, drücken Sie die Dash-Taste
Aws lambda button Pushed.
{
"LogResult": "XXXXXXXXXXXXXX",
"StatusCode": 200
}
$ cat output.txt
"Hello from Lambda"$
#Das Ausgabeergebnis wird übernommen!
Ich konnte es so machen.
――Ich bin nicht herausgekommen, auch wenn ich es gegoogelt habe, also dachte ich, dass es erst jetzt war und tat es mit Schwung ――Jedos, wenn Sie "Amazon Dash Button (Programmiersprache)" googeln, finden Sie viele Artikel aus Übersee, was praktisch ist. --Wenn Amazon IoT Button überhaupt in Japan erscheint ... [Ich habe versucht, AWS IoT Button #reinvent | Developers.IO zu zerlegen](http://dev.classmethod.jp/cloud/aws/decomposition-aws- iot-button /) »Eigentlich dachte ich zuerst, ich würde es mit Fenstern machen, aber es war am ärgerlichsten, Scapy zu verwenden, und als ich es bemerkte, legte ich Ubuntu in das Chrombuch und tat es darauf ――Ich war ein wenig beeindruckt, dass Sie einen Server per Knopfdruck erstellen und zu einem guten Preis an einen internen App-Techniker verkaufen konnten? ――Und wenn Sie spielen, wird die Benachrichtigung des Smartphones Interessanterweise w
――Seit ich es nicht mehr benutze, habe ich es deaktiviert und zurückgesetzt. Amazon.co.jp-Hilfe: Dash-Schaltfläche deaktivieren
das ist alles.
Recommended Posts