前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >技术|通过 ssh 会话执行 bash 别名

技术|通过 ssh 会话执行 bash 别名

原创
作者头像
用户8710643
修改2021-07-12 10:33:59
6210
修改2021-07-12 10:33:59
举报
文章被收录于专栏:linux百科小宇宙linux百科小宇宙

我在远程主机上上设置过一个叫做file_repl的bash别名。当我使用ssh命令登录远程主机后,可以很正常的使用这个别名。然而这个bash别名却无法通过ssh来运行,像这样:

$sshvivek@server1.cyberciti.bizfile_replbash:file_repl:commandnotfound我要怎样做才能通过ssh命令运行bash别名呢?

SSH客户端(ssh)是一个登录远程服务器并在远程系统上执行shell命令的Linux/Unix命令。它被设计用来在两个非信任的机器上通过不安全的网络(比如互联网)提供安全的加密通讯。

如何用ssh客户端执行命令通过ssh运行free命令或date命令可以这样做:

$sshvivek@server1.cyberciti.bizdate结果为:

TueDec2609:02:50UTC2017或者:

$sshvivek@server1.cyberciti.bizfree-h结果为:

totalusedfreesharedbuff/cacheavailableMem:2.0G428M138M145M1.4G1.1GSwap:0B0B0B理解bashshell以及命令的类型bashshell共有下面几类命令:

别名,比如ll关键字,比如if函数(用户自定义函数,比如genpasswd)内置命令,比如pwd外部文件,比如/bin/datetype命令和command命令可以用来查看命令类型:

$type-adatedateis/bin/date$type-afreefreeis/usr/bin/free$command-Vpwdpwdisashellbuiltin$type-afile_replisaliasedto`sudo-i/shared/takes/master.replication'date和free都是外部命令,而file_repl是sudo-i/shared/takes/master.replication的别名。你不能直接执行像file_repl这样的别名:

$sshuser@remotefile_repl在Unix系统上无法直接通过ssh客户端执行bash别名要解决这个问题可以用下面方法运行ssh命令:

$ssh-tuser@remote/bin/bash-ic'your-alias-here'$ssh-tuser@remote/bin/bash-ic'file_repl'ssh命令选项:

-t:强制分配伪终端。可以用来在远程机器上执行任意的基于屏幕的程序,有时这非常有用。当使用-t时你可能会收到一个类似“bash:cannotsetterminalprocessgroup(-1):Inappropriateioctlfordevice.bash:nojobcontrolinthisshell.”的错误。bashshell的选项:

-i:运行交互shell,这样shell才能运行bash别名。-c:要执行的命令取之于第一个非选项参数的命令字符串。若在命令字符串后面还有其他参数,这些参数会作为位置参数传递给命令,参数从$0开始。总之,要运行一个名叫ll的bash别名,可以运行下面命令:

$ssh-tvivek@server1.cyberciti.biz-ic'll'结果为:

下面是我的一个shell脚本的例子:

#!/bin/bashI"tags.deleted.410"O"/tmp/https.www.cyberciti.biz.410.url.conf"box"vivek@server1.cyberciti.biz"[!-f"$I"]&&{echo"$Ifilenotfound。";exit10;}>$Ocat"$I"|sort|uniq|whileread-rudouu"${u##https://www.cyberciti.biz}"echo"~^$uu1;">>"${O}"doneecho"Configfilecreatedat${O}andnowupdatingremotenginxconfigfile"scp"${O}"${box}:/tmp/ssh${box}/usr/bin/lxcfilepush/tmp/https.www.cyberciti.biz.410.url.confnginx-container/etc/nginx/ssh-t${box}/bin/bash-ic'push_config_job'相关资料更多信息请输入下面命令查看OpenSSH客户端和bash的man帮助:

$manssh$manbash$helptype$helpcommand

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档