Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
CIRCLE
/
agent
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
7
Merge Requests
0
Wiki
Members
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
A prog2-höz tartozó friss repo anyagok itt elérhetőek:
https://git.iit.bme.hu/
Commit
262b6add
authored
Mar 08, 2014
by
Bach Dániel
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
code refactoring
parent
e10b401d
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
56 additions
and
44 deletions
+56
-44
agent.py
+56
-44
No files found.
agent.py
View file @
262b6add
...
...
@@ -7,20 +7,48 @@ from twisted.internet.serialport import SerialPort
import
psutil
import
uptime
import
subprocess
import
fileinput
#import netifaces
import
platform
from
datetime
import
datetime
from
utils
import
SerialLineReceiverBase
fstab_template
=
(
'sshfs#
%(username)
s@
%(host)
s:home /home/cloud/sshfs '
'fuse defaults,idmap=user,reconnect,_netdev,uid=1000,'
'gid=1000,allow_other,StrictHostKeyChecking=no,'
'IdentityFile=/home/cloud/.ssh/id_rsa 0 0
\n
'
)
system
=
platform
.
system
()
# http://stackoverflow.com/questions/12081310/
# python-module-to-change-system-date-and-time
def
linux_set_time
(
time
):
import
ctypes
import
ctypes.util
CLOCK_REALTIME
=
0
class
timespec
(
ctypes
.
Structure
):
_fields_
=
[(
"tv_sec"
,
ctypes
.
c_long
),
(
"tv_nsec"
,
ctypes
.
c_long
)]
librt
=
ctypes
.
CDLL
(
ctypes
.
util
.
find_library
(
"rt"
))
ts
=
timespec
()
ts
.
tv_sec
=
int
(
time
)
ts
.
tv_nsec
=
0
librt
.
clock_settime
(
CLOCK_REALTIME
,
ctypes
.
byref
(
ts
))
class
Context
(
object
):
@staticmethod
def
change_password
(
new_password
):
system
=
platform
.
system
()
if
system
==
'Linux'
:
proc
=
subprocess
.
Popen
([
'/usr/bin/sudo'
,
'/usr/sbin/chpasswd'
],
proc
=
subprocess
.
Popen
([
'/usr/sbin/chpasswd'
],
stdin
=
subprocess
.
PIPE
)
proc
.
communicate
(
'cloud:
%
s
\n
'
%
new_password
)
elif
system
==
'Windows'
:
...
...
@@ -31,20 +59,13 @@ class Context(object):
@staticmethod
def
restart_networking
():
system
=
platform
.
system
()
if
system
==
'Linux'
:
interfaces
=
'''
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
'''
proc
=
subprocess
.
Popen
([
'/usr/bin/sudo'
,
'/usr/bin/tee'
,
'/etc/network/interfaces'
],
stdin
=
subprocess
.
PIPE
)
proc
.
communicate
(
interfaces
)
subprocess
.
call
([
'/usr/bin/sudo'
,
'/etc/init.d/networking'
,
'restart'
])
with
open
(
'/etc/network/interfaces'
,
'w'
)
as
f
:
f
.
write
(
'auto lo
\n
'
'iface lo inet loopback
\n
'
'auto eth0
\n
'
'iface eth0 inet dhcp
\n
'
)
subprocess
.
call
([
'/etc/init.d/networking'
,
'restart'
])
elif
system
==
'Windows'
:
import
wmi
w
=
wmi
.
WMI
()
...
...
@@ -53,10 +74,12 @@ class Context(object):
@staticmethod
def
set_time
(
new_time
):
system
=
platform
.
system
()
if
system
==
'Linux'
:
subprocess
.
call
([
'/usr/bin/sudo'
,
'/etc/init.d/openntpd'
,
'restart'
])
linux_set_time
(
float
(
new_time
))
try
:
subprocess
.
call
([
'/etc/init.d/openntpd'
,
'restart'
])
except
:
pass
elif
system
==
'Windows'
:
import
win32api
t
=
datetime
.
utcfromtimestamp
(
float
(
new_time
))
...
...
@@ -65,38 +88,28 @@ class Context(object):
@staticmethod
def
set_hostname
(
new_hostname
):
system
=
platform
.
system
()
if
system
==
'Linux'
:
# /etc/hostname
proc
=
subprocess
.
Popen
([
'/usr/bin/sudo'
,
'/usr/bin/tee'
,
'/etc/hostname'
],
stdin
=
subprocess
.
PIPE
)
proc
.
communicate
(
new_hostname
)
# /etc/hosts
proc
=
subprocess
.
Popen
([
'/usr/bin/sudo'
,
'/usr/bin/tee'
,
'-a'
,
'/etc/hosts'
],
stdin
=
subprocess
.
PIPE
)
proc
.
communicate
(
'127.0.1.1
%
s
\n
'
%
new_hostname
)
subprocess
.
call
([
'/usr/bin/sudo'
,
'/bin/hostname'
,
new_hostname
])
with
open
(
'/etc/hostname'
,
'w'
)
as
f
:
f
.
write
(
new_hostname
)
with
open
(
'/etc/hosts'
,
'w'
)
as
f
:
f
.
write
(
'127.0.0.1 localhost'
'127.0.1.1
%
s
\n
'
%
new_hostname
)
# set hostname
subprocess
.
call
([
'/bin/hostname'
,
new_hostname
])
elif
system
==
'Windows'
:
import
wmi
wmi
.
WMI
()
.
Win32_ComputerSystem
()[
0
]
.
Rename
(
new_hostname
)
@staticmethod
def
mount_store
(
host
,
username
,
password
,
key
):
system
=
platform
.
system
()
if
system
==
'Linux'
:
data
=
(
'sshfs#
%(username)
s@
%(host)
s:home /home/cloud/sshfs '
'fuse defaults,idmap=user,reconnect,_netdev,uid=1000,'
'gid=1000,allow_other,StrictHostKeyChecking=no,'
'IdentityFile=/home/cloud/.ssh/id_rsa 0 0
\n
'
)
proc
=
subprocess
.
Popen
([
'/usr/bin/sudo'
,
'/usr/bin/tee'
,
'-a'
,
'/etc/fstab'
],
stdin
=
subprocess
.
PIPE
)
proc
.
communicate
(
data
%
{
'host'
:
host
,
'username'
:
username
,
'password'
:
password
})
for
line
in
fileinput
.
input
(
'/etc/fstab'
,
inplace
=
1
):
if
line
.
startswith
(
'sshfs#'
):
line
=
''
with
open
(
'/etc/fstab'
,
'a'
)
as
f
:
f
.
write
(
fstab_template
%
{
'host'
:
host
,
'username'
:
username
,
'password'
:
password
})
elif
system
==
'Windows'
:
data
=
(
'net use * /delete /yes
\r\n
'
...
...
@@ -189,7 +202,6 @@ class SerialLineReceiver(SerialLineReceiverBase):
def
main
():
system
=
platform
.
system
()
if
system
==
'Windows'
:
port
=
r'\\.\COM1'
else
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment