我需要通过 SSH 控制台到许多机器。包括Linux、Mac、移动设备、虚拟机。有时候一天要登录10多台机器。
我喜欢我的个人 .bashrc 或 .bash_profile 设置,比如提示 (PS1)、历史控制、别名和其他有用的设置。但是在许多机器上保持这些设置只是痛苦。
所以如果有人知道如何自动化这个?最好的办法是从我的“motherworld-PC”中“随身携带”这些设置。
小智 7
您可以使用https://serverfault.com/a/400782 中描述的方法
您必须使用 PermitLocalCommand 和 LocalCommand 来完成此操作。
我认为这个解决方案是好的,但我不喜欢它,因为它会scp通过将我的本地 .bashrc替换为远程.bashrc 来替换远程机器的.bashrc。此外,我无法完全按照我的预期工作。
另一种解决方案是使用 git 来管理所有的点文件,如
http://blog.smalleycreative.com/tutorials/using-git-and-github-to-manage-your-dotfiles/
但是对我来说一个很大的问题是我必须用我的点文件设置每个服务器。即使我有时间(和耐心)将我的 dot 文件部署到每台服务器,我仍然会遇到一个问题。
想象一个上下文,其中多个用户使用相同的登录名登录到同一台服务器,将服务器默认值更改为我的默认值是不公平的。
然后...
所以,我为此开发了自己的解决方案,希望你喜欢它并发现它有用:
您将需要:
mycustombashrc.sh <>按钮获取它的原始版本链接。您将需要此链接、原始要点链接或RAWGISTLINK然后在您的本地.bashrc将以下内容放在最后:
function customssh(){
ssh $@ -t 'cd $HOME ;
wget --quiet -N "RAWGISTLINK" ;
cp GISTNAME .'$USER'bashrc ;
bash --rcfile $HOME/.'$USER'bashrc'
}
Run Code Online (Sandbox Code Playgroud)
记得替换 GISTNAME 和 RAWGISTLINK
现在运行
source ~/.bashrc
然后只需使用customssh(您仍然可以使用常规的ssh)
customssh mylogin@remoteserver
现在就试试你的别名之一吧!
笔记
source ~/.bashrc。就是这样!无需更改远程服务器中的任何内容!wget从其他地方使用 custombashrc.sh。例如公共网络服务器。scp将文件从本地服务器(使用公共地址)发送到远程服务器。我没有使用这个解决方案,因为很难假设你的本地机器不会隐藏在路由器或防火墙后面(就我而言,我在路由器后面)这种方法的最佳之处在于它在远程服务器中没有任何改变,并且在本地机器上几乎没有任何变化,并且有了 gist,您可以在任何您想要的服务器中获得本地 .bashrc 的所有乐趣。
而且您仍然可以通过使用ssh而不是轻松地“禁用”它customssh。
| 归档时间: |
|
| 查看次数: |
4524 次 |
| 最近记录: |