Is this possible? Store data from Asus Router ajax .asp page for Temperature data.
-
Thank you for the reply.
OK so I ran "ssh-keygen" on the MSR Linux box, this created an id_rsa.pub public key in the /root/.ssh directory.
I then copied that key onto my Asus Router in the Administration -> System menu "Authorized Keys".
I then on the terminal on the MSR host ran this command
ssh -i ~/.ssh/id_rsa.pub admin@192.168.0.1 'cat /sys/class/thermal/thermal_zone0/temp'
I then saw this:
It then prompted me for a password, which I was not expecting for admin@192.168.0.1
After entering the password it looks to have returned the requested CPU temp value.When I ran the ssh-keygen I didn't enter a password for the key that was to be generated. Perhaps this was my mistake, I wasn't sure if I had to leave the password blank for the two systems to connect together over SSH without it prompting for a password etc.
Thanks
-
I ran the ssh-keygen again and this time entered a password for the key. It generated a different key, so I copied to the routers Admin page again.
Now when I run the ssh command on the terminal on the MSR host it says the same thing:
"Permissions 0644 for '/root/.ssh/id_rsa.pub' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/root/.ssh/id_rsa.pub": bad permissions"So not sure why that is.
These are the permissions the system set on the file
-
Think my command was wrong I need to remove the .pub from it. So its /id_rsa not /id_rsa.pub
ssh -i ~/.ssh/id_rsa admin@192.168.0.1 'cat /sys/class/thermal/thermal_zone0/temp'
Now its prompting me for the key password. So perhaps I do need to generate the key with no password after all.
-
Must be doing something wrong I am getting null in the local expression
Looks like the path is wrong it should be root not my home dir
Doesn't work either if I put in root instead of ~
I then tried copying the id_rsa file into my home directory and the .ssh folder in there. But it still doesn't work. So I am stuck now.
-
OK. The
~
means the home directory of the login user, and where MSR is running, that appears to be/home/stuart
, so that's why the first attempt doesn't work.The second attempt doesn't work because you used
root/...
instead of/root/...
... it's a path, not a username, so it needs to begin with a/
. Just changing that is unlikely to work, either, because regular users (like stuart) do not have (and should never have) access to the.ssh
directory of any other user, especially that ofroot
.You need to copy the public and private key files to somewhere where Reactor has access, and specify the full path to that directory in the command line's
-i
option.Alternately, use the public key for user stuart as the trusted key on the router, and let that user make the connection. This is by far preferable, as copying
root
's private key around to other places and giving it lower access permissions presents serious security risks. -
OK thanks, I changed the command in the rule to this now:
ssh -i /root/.ssh/id_rsa admin@192.168.0.1 'cat /sys/class/thermal/thermal_zone0/temp'
I am no longer getting any alert errors in MSR but the local expression is not being populated. As your edit just said that is likely why.
I then tried this command instead.
ssh -i home/stuart/.ssh/id_rsa admin@192.168.0.1 'cat /sys/class/thermal/thermal_zone0/temp'
and
ssh -i /home/stuart/.ssh/id_rsa admin@192.168.0.1 'cat /sys/class/thermal/thermal_zone0/temp'
But I get alert errors again.
"Alternately, use the public key for user stuart as the trusted key on the router, and let that user make the connection."
That might be the best option. I need to work out how to ssh-keygen for a particular user though ?
-
OK thanks, I changed the command in the rule to this now:
ssh -i /root/.ssh/id_rsa admin@192.168.0.1 'cat /sys/class/thermal/thermal_zone0/temp'
I am no longer getting any alert errors in MSR but the local expression is not being populated. As your edit just said that is likely why.
I then tried this command instead.
ssh -i home/stuart/.ssh/id_rsa admin@192.168.0.1 'cat /sys/class/thermal/thermal_zone0/temp'
and
ssh -i /home/stuart/.ssh/id_rsa admin@192.168.0.1 'cat /sys/class/thermal/thermal_zone0/temp'
But I get alert errors again.
"Alternately, use the public key for user stuart as the trusted key on the router, and let that user make the connection."
That might be the best option. I need to work out how to ssh-keygen for a particular user though ?
@cw-kid said in Is this possible? Store data from Asus Router ajax .asp page for Temperature data.:
I need to work out how to ssh-keygen for a particular user though ?
Why? Just use the existing key in
~stuart/.ssh
. If there isn't one, you just runssh-keygen
as user stuart rather than asroot
(nosudo
either). -
@cw-kid the
\n
at the end is a newline character. Linux is quite literal. You can push that string through the expressionint()
function and it will convert it to a number and ignore the newline. -
@cw-kid the
\n
at the end is a newline character. Linux is quite literal. You can push that string through the expressionint()
function and it will convert it to a number and ignore the newline.@toggledbits said in Is this possible? Store data from Asus Router ajax .asp page for Temperature data.:
You can push that string through the expression int() function
No idea what that means, but I will search. I also need to do some thing with that data like round it, as it says"66986" which should read as 66.99 degrees
-
int(RouterCPUTemp) / 1000
-
You can wrap that in a
round()
if you only want one decimal (for example)...round( int( RouterCPUTemp ) / 1000, 1 )
-
You can wrap that in a
round()
if you only want one decimal (for example)...round( int( RouterCPUTemp ) / 1000, 1 )
@toggledbits said in Is this possible? Store data from Asus Router ajax .asp page for Temperature data.:
round( int( RouterCPUTemp ) / 1000, 1 )
Even better, you have made my day! Thank you.
I have been worrying about my router getting too hot, now I will know if it does.
-
You can wrap that in a
round()
if you only want one decimal (for example)...round( int( RouterCPUTemp ) / 1000, 1 )