是否可以使用 bash shell 脚本自动执行共享主机设置?

是否可以使用 bash shell 脚本自动执行共享主机设置?

前言: 之前从未创建过 shell bash 脚本。所以,首先,我甚至不确定这是否是适合这项工作的工具。如果不是,请首先告诉我,您认为最好的替代方案是什么。

语境: 每次尝试设置网站时,我经常会执行重复任务。我希望通过运行一两个命令来自动执行这些任务。更新:共享主机基于 Unix。本地计算机是 Mac OS X,因此也是基于 Unix。

作为示例,以下是我经常执行的一些任务(命令):

SCP-365:

scp ~/local/path/general_web_app/.bash_profile [email protected]:/home/HOSTNAME/.bash_profile

scp ~/local/path/general_web_app/.gitconfig [email protected]:/home/HOSTNAME/.gitconfig

直接 SSH:

ssh [email protected] 
cd /www/www/
git init
git add .
git commit -a -m "first commit"
cd ~/private/ && mkdir repos

编辑、查找、替换、保存并退出:

pico ~/remote/private/repos/general_hub.git/hooks/post-update
replace "user" WITH "hostname";
hit "cmd x"
hit "y"

据我所知:这些是我希望脚本执行的不同类型的任务。

问题 1: bash 脚本可以直接处理 SCP、SSH 以及 EDIT FIND REPLACE SAVE AND EXIT 吗?

问题2: 应该向运行脚本的用户询问一些参数,并且应该将这些参数放在一些文件中(替换存在的特定关键字) - 这可以实现吗?

问题 3: 我们应该将文件复制到远程并直接在远程进行编辑,还是应该在本地抓取文件,“在临时位置本地编辑它们”,然后将它们放在服务器上?我认为第二种方法要复杂得多。

有什么例子可以供我参考吗?

提前致谢

答案1

简短的回答是:全部是。

我来举几个例子。下面是一个在远程机器上执行本地 bash 脚本的命令示例:请注意,不需要将其复制到远程机器:

   ssh user@remote_pc 'bash -s' < local_file.sh

这非常简单,可能不值得编写整个脚本来处理它,但是如果您愿意,也可以通过脚本来安排。但是,要使其工作,您必须设置passwordless loginssh 连接。如果您不这样做,脚本中的 ssh/scp 命令将停止,因为它们会等待您输入远程用户的密码。

至于编辑等,Unix 有终极流编辑器sed,它的作用就是:例如,命令

 sed 's/a/A/g' old_file.txt > new_file.txt

将小写字母替换a为大写字母A,并将输出放入新文件中。这也可以轻松编写脚本。

至于参数,shell 脚本可以从文件读取参数,也可以查询环境以获取某些参数。无需询问用户的登录名,

  echo $USER
  whoami

会执行此操作,即使在脚本内也是如此。家庭住址echo $HOME等也一样。

至于您的第三个问题,我希望我的第一个回答也能对此提供答复:第一个命令允许您在远程服务器上执行您在本地编辑的脚本文件,甚至不必将其复制到那里。

欢迎来到 *Nix 的世界,在这里你的愿望就是我的命令

抱歉,我忘了:这个命令

  export -p | more

将显示所有可用的局部变量(技术上,它们已被 出口)。

相关内容