使用iOS快捷方式应用程序执行ssh脚本:Rasberery Pi和Linux操作进度!


简介

您是否正在使用iOS快捷方式应用程序?直到最近我才使用它...
但是,最近我开始感觉到与Rasberry Pi结合使用的无限可能性(*可以与其他设备一起使用),我想与我的画笔分享这种印象!
image.png

本文主要处理以下内容。

  • SSH连接设置方法(iOS 13支持公钥认证)
  • 运行任何脚本

    • 简单的例子
    • 运行在后台连续运行的程序
    • 退出后台运行的程序
    • 关闭/重启远程机器

我最近开始在这里工作,因此,如果您能对任何错误发表评论,我将不胜感激。

SSH连接设置方法(iOS 13支持公钥身份验证)

在iOS12之前,只能通过密码身份验证进行连接,但是从iOS13开始,支持公钥身份验证。连接方法非常简单。

1.在iPhone上操作:公钥共享

首先,启动快捷方式应用程序,然后从搜索字段中选择"通过SSH运行脚本"。
image.png

然后,将显示输入SSH连接设置的屏幕,如下所示。
主机,端口和用户应根据其环境进入。
身份验证方法默认为密码,但您可以选择SSH密钥。
image.png

选择

SSH密钥时,将显示以下屏幕。
首先,选择①" Generate new key",然后选择所需的类型和位长。
接下来,选择②"共享公共密钥"以显示公共密钥。选择最适合您的共享方式,例如通过电子邮件发送。
如果要连接到SSH的计算机尚未禁用密码身份验证,请将此处生成的公共密钥复制到剪贴板,使用密码连接SSH→将公共密钥添加到配置文件中,以此类推。我认为它可以操作。
此时,我已禁用了密码身份验证,因此我将iPhone的公钥通过电子邮件发送给另一台已通过公钥进行身份验证的PC,然后使用另一台PC添加了公钥。

image.png

2.在要连接到SSH的目标计算机上的操作

因为这里有很多文章,所以我将省略详细信息,仅列出链接。我想使用Rasberry Pi,所以请原谅我是这样。

主要来源;
https://www.raspberrypi.org/documentation/remote-access/ssh/passwordless.md

二级来源:
https://tool-lab.com/raspi-key-authentication-over-ssh/

这样就完成了连接设置。之后,我将编写脚本。我将用一个具体的例子来解释。

运行任何脚本

简单示例

首先,让我们执行一个简单的示例,获取在远程PC上运行的任务列表并将其显示在iPhone上。
您可以使用ps获取任务列表,但无法在iPhone上显示结果。如果在此处添加"查看"操作,则默认情况下会收到" shell脚本结果"。
执行此操作时,您应该在通知区域中看到在远程PC上运行的任务列表。

image.png

运行在后台连续运行的程序

以下示例。
如果程序连续运行,例如"启动服务器",则快捷方式应用程序将继续等待程序完成,并且操作不会完成。
即使避免了上述问题,即使在断开SSH连接后,也必须在远程PC侧继续该过程。

这次,我将描述在后台以后台方式执行程序~/myapp/main的情况。

1
2
cd ~/myapp
nohup ./main >/dev/null 2>&1 &
  • nohup:此命令允许您在SSH连接后继续处理

  • Last &:这将在后台执行
  • >/dev/null 2>&1:如果仅按上述方式执行nohup ./main &,则可能由于显示了各种标准输出而导致操作未完成。因此,添加此命令以读取标准输出?错误。

通过上述处理,即使在SSH连接断开后,我们也可以在后台执行该处理并继续操作。

终止在后台运行的程序

嗯,能够在后台运行该进程真是太好了,但是问题是您无法杀死它。
在这种情况下,请执行以下脚本。 (将主要部分替换为您要完成的任务名称)
我指的是这里。

1
ps aux | grep main | grep -v grep | awk '{print "kill -9", $2}' | sh

关闭/重新启动远程计算机

顺便说一句,当使用Rasberry Pi等时,关闭机器是一件简单而麻烦的事情。
我每次都执行sudo shutdown -h now,但是如果可能的话,我想通过触摸按钮来执行它。

即使在这种情况下,您也可以使用快捷方式应用程序:innocent:

过程很简单,只需如上例中那样编写脚本,但是在sudo时必须输入密码,而使用快捷方式应用程序要花很多精力。

如果重新启动

1
echo (毎回尋ねる) | sudo -S reboot 2>/dev/null
  • 您可以通过设置sudo -S从标准输出中接收密码。

  • 因此,我运行echo,但是在某种程度上,我担心之后会以明文形式保存密码。因此,我决定使用快捷方式的"变量"功能,并每次都要求输入密码。

现在您可以通过触摸按钮来快捷或重新启动...!

结论

怎么样了?这次我根据实践案例介绍了一个示例,但是我认为根据组合情况,它可以用于其他各种案例。
欢迎将其用于此类事物的评论……!