如何使终端命令自动化?

2024-03-28 17:17:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我厌倦了这样做。在

ssh me@somehost.com
input my password
sudo su - someuser
input my password
cd /some/working/directory
<run some commands>

有没有办法让它自动化?我需要特殊的外壳吗?或者一个shell模拟器?我可以用编程方式将shell驱动到某个点,然后对它运行手动命令吗?在

额外的加分是用python编写的,以获得额外的黑客优势

编辑:下面所有的答案都集中在问题的“全自动化”部分:难的部分是我上面强调的。这是另一个例子,看看我是否能抓住本质。在

^{pr2}$

Tags: cominputmysudocdsomepasswordshell
3条回答

我不太确定您在问什么,但您可能要问的是让SSH在无密码模式下使用公钥工作。一般的想法是生成一个SSH密钥对:

ssh-keygen -t rsa

这给了你id_rsa和{}。您将id_rsa.pub的内容附加到目标用户的~/.ssh/authorized_keys文件中,从此以后SSH将不再请求凭据。在您的示例中,这将导致:

仅一次

^{pr2}$

从现在开始,你现在可以跑了

ssh someuser@somehost.com "sh -c 'cd /some/dir; command.sh'"

不会被提示输入凭据。在

正如其他人所指出的,织物是个不错的选择。还有一个pexpect可能是你想要的。在

对于ssh/身份验证部分,您可以setup passwordless authentication by using keys。然后您可以简单地使用ssh和bash脚本以自动方式执行一系列命令。在

在这里,可以使用Python,但是如果您正在执行一系列shell命令,那么使用shell脚本可能是一个更好的主意,因为它们正是这样做的。在

或者,根据您的自动化需求查看Fabric。它是基于Python的,你的“食谱”是用Python编写的。在

相关问题 更多 >