我在远程主机上上设置过一个叫做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 删除。