Bash 自动登录raspberry pi(使用wifi路由器连接)并运行命令
我是一名Mac用户,我想将ssh密码输入Raspberry pi的过程自动化,运行一些命令并将文件传输到本地计算机。我不熟悉bash脚本,想知道我的代码的一般结构应该是什么样的。我使用wifi路由器连接到pi,因此当我打开终端时,它会自动询问我密码 编辑:我可以在bash脚本中使用sshpass,但是下面的命令(如top和kill)无法执行。事实上,在我将sshpass输入我的pi之后,它会等待我在终端中输入命令。以下是我的shell脚本代码:Bash 自动登录raspberry pi(使用wifi路由器连接)并运行命令,bash,raspberry-pi,Bash,Raspberry Pi,我是一名Mac用户,我想将ssh密码输入Raspberry pi的过程自动化,运行一些命令并将文件传输到本地计算机。我不熟悉bash脚本,想知道我的代码的一般结构应该是什么样的。我使用wifi路由器连接到pi,因此当我打开终端时,它会自动询问我密码 编辑:我可以在bash脚本中使用sshpass,但是下面的命令(如top和kill)无法执行。事实上,在我将sshpass输入我的pi之后,它会等待我在终端中输入命令。以下是我的shell脚本代码: #!/bin/bash sshpass -p 'r
#!/bin/bash
sshpass -p 'raspberry' ssh -o StrictHostKeyChecking=no pi@192.168.0.101
ssh -t pi@192.168.0.101 'sudo killall RPI_Log px4'
在脚本中,您应该能够执行以下操作:
#Run`运行命令`
sshpass-pwhatever-sshuser@host运行命令
mkdir复制的文件
#将“主机”上的“文档”递归复制到此计算机上的“复制的文档”。
sshpass-pwhatever scp-ruser@host:文件复制文件
不过,无密码密钥对可能比脚本中的密码更安全,即使它不是高度安全性。创建密钥对并在计算机和Raspberry Pi上进行设置后,您还可以在Mac上编辑~/.ssh/config
,如下所示:
主机*
是的
压缩水平9
自动控制主机
ControlPath~/.ssh/.socket-%r@%h:%p
控制持续60
ServerAliveInterval 15
主pi
主机名192.168.0.101
用户pi
IdentityFile~/.ssh/id_rsa
现在,您可以使用
ssh-pi命令运行
和scp-rpi:Documents-copied-Documents
。请注意,sshpass
不再需要,pi
比pi@192.168.0.101
。另外,如果用户名或主机发生更改(或者您想添加另一个),则只需更新~/.ssh/config
user@host组合)。如果运行ssh会发生什么user@hostecho hello
?如果您编写您使用的命令,它将更有帮助。因此我基本上自动登录到pi。然后我必须键入“exit”,它会重新登录,但要求我手动键入密码,打印hello并退出pi。在执行sshpass命令后,您能检查一下ssh-t是否pi@192.168.0.101“echo | sudo-S killall RPI_Log px4”提供结果?sshpass正在按预期让您登录,但您没有传递要执行的命令,因此,它让您登录到一个交互式会话(因此需要退出)。第二行有您想要的命令,但没有用sshpass包装。尝试将远程命令(sudo…?)放在sshpass行的末尾。因此,我假设scp复制了我需要的文件,但我也可以以类似的方式使用kill命令吗?@YuktiKathuria Yes,在远程主机上,ssh上执行kill
pi@192.168.0.101杀死任何东西
。要停止scp,只需按Ctrl+C。