测试

Linux expect

在自己的电脑上登录到远程服务器执行一些操作,需要先在本机执行 ssh root@192.168.31.128,进入服务器后,再执行操作。 可以使用shell脚本使这一系列操作自动化。但包含 ssh root@192.168.31.128 的shell脚本在执行时,需要手动输入密码。 使用 expect 可自动输入密码。

具体使用如下文所述。

需要两个文件 publish.shauto-publish.exp

publish.sh 非必需,可将该文件中的命令转移到 auto-publish.exp。 转移方法是,publish.sh 中的 cd /Users/cg/Documents/blog-sphinx/source 等价于 auto-publish.exp 中的 spawn cd /Users/cg/Documents/blog-sphinx/source

auto-publish.exp

#! /usr/bin/expect

set timeout 10

set host "49.235.149.104"
set username "root"
set password "123456"

# 执行具体操作的shell脚本的路径
spawn /Users/cg/Documents/blog-sphinx/source/tool/publish.sh
# 当输出信息中包含 password 时,输入密码
expect "*password*" {send "$password\r"}
#interact
expect eof

publish.sh

#! /bin/bash

cd /Users/cg/Documents/blog-sphinx/source
git add .
git commit -a -m'提交代码'
git push origin master

ssh root@49.235.149.104 '
echo "进入目录"
cd /home/cg/sphinx-blog-source/source
echo "拉取代码"
git pull origin master
echo "生成HTML"
cd /home/cg/sphinx-blog-source
sphinx-build -b html /home/cg/sphinx-blog-source/source /home/cg/my-sphinx-blog
echo "结束"
'

注解

ssh root@49.235.149.104 ‘some code’ 中的单引号也可换成双引号,视引号内使用了双引号还是单引号而定。此处的引号一定不能缺少。

\[\begin{split}(a + b)^2 &= (a + b)(a + b) \\ &= a^2 + 2ab + b^2\end{split}\]
Frozen Delights!

Treat

Quantity

Description

Albatross

2.99

On a stick!

Crunchy Frog

1.49

If we took the bones out, it wouldn’t be crunchy, now would it?

Gannet Ripple

1.99

On a stick!

ssh root@49.235.149.104 ‘some code’

Header row, column 1 (header rows optional)

Header 2

Header 3

Header 4

body row 1, column 1

column 2

column 3

column 4

body row 2

def my_function():
    "just a test"
    print 8/2

/Users/cg/Library/Python/3.7/lib/python/site-packages/sphinx/themes/sphinxdoc

<a target=”_blank” href=”http://beian.miit.gov.cn”>鄂ICP备19031373号</a>