自动登录树莓派(使用wifi路由器连接)并运行命令

时间:2018-10-16 23:43:41

标签: bash raspberry-pi

我是Mac用户,我想自动化输入密码以将ssh输入Raspberry pi,运行一些命令并将文件传输到本地计算机的过程。我是bash脚本的新手,并且想知道我的代码的总体结构应该是什么样。我使用wifi路由器连接到pi,因此当我打开终端时,它将自动要求我输入密码。

编辑:我能够在我的bash脚本中使用sshpass,但是以下命令(例如top和kill)无法执行。实际上,在我sshpass到pi之后,它会等待我在终端中输入命令。这是我的Shell脚本代码:

#!/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'

1 个答案:

答案 0 :(得分:1)

在脚本中,您应该可以执行以下操作:

# Run `command to run`
sshpass -pwhatever ssh user@host command to run

mkdir copied-documents
# Recursively copy `Documents` on `host` to `copied-documents` on this machine.
sshpass -pwhatever scp -r user@host:Documents copied-documents

即使没有安全性,无密码密钥对也可能比脚本中的密码更安全。创建密钥对并将其设置在计算机和Raspberry Pi上之后,您还可以在Mac上将~/.ssh/config编辑为以下内容:

Host *
  Compression yes
  CompressionLevel 9
  ControlMaster auto
  ControlPath ~/.ssh/.socket-%r@%h:%p
  ControlPersist 60
  ServerAliveInterval 15

Host pi
  HostName 192.168.0.101
  User pi
  IdentityFile ~/.ssh/id_rsa

现在您可以使用ssh pi command to runscp -r pi:Documents copied-documents。请注意,不再需要sshpass,并且pipi@192.168.0.101更容易键入。另外,如果用户名或主机发生更改(或者您想添加另一个user @ host组合),则只需要更新~/.ssh/config