在Linux中为了安全,会将不同的程序运行在不同的用户下,当需要使用某些权限时,需要通过su来切换用户执行。为了省去su的步骤,我们往往会建一个同名的shell脚本,在其中通过su user -c "commond"的方式来执行程序。例如,在cdh版的hive中为了对文件有权限,需要su hdfs上(当然,你也可以改变hdfs上文件夹权限), 当打开hive后,往往按退格键会出现^H,这个可以在启动hive前,先通过stty erase ^H命令来消除退格的显示;按上下左右键会出现^[[A、^[[B、^[[C、^[[D,经过查资料,了解到这个跟readline library有关,可以安装一个readline包装器rlwrap来解决:
yum -y search readline rlwarp
没有yum源的,可以下载rpm包安装,不做赘述。
然后在启动hive前,可以下执行stty erase ^H来消除退格键的显示,再通过rlwrap hive的方式来对hive命令行进行包装。该解决方案也适用于其他命令行工具,如Oracle的Sqlplus等。
以下是我包装的hive
#!/bin/bash export HADOOP_HOME=${HADOOP_HOME:-/data/opt/hadoop} export HIVE_HOME=/data/opt/hive user=`whoami` if [[ "$user" == "hdfs" ]];then exec $HIVE_HOME/bin/hive "$@" else su hdfs -c "stty erase ^H;rlwrap $HIVE_HOME/bin/hive \"$*\"" fi
将这个hive文件放到用户的环境变量下,在root或者其他具有su hdfs权限用户下,就可以直接通过hive正常访问HDFS和使用退格、上下左右键了。
相关推荐
在使用SecureCRT进行远程连接到数据库时,特别是通过SQL*Plus工具执行SQL语句时,我们可能会遇到一个问题:使用上下箭头键来翻阅之前输入过的SQL命令时,SecureCRT无法正常显示这些历史记录。这种情况在Windows系统...
在使用Oracle的命令行工具Sqlplus时,用户可能会遇到一个常见问题:无法使用回车键确认输入或通过上下箭头键访问命令历史记录。这不仅降低了工作效率,还可能在频繁切换窗口查询历史命令时带来不便。为了解决这个...
7. 文本内容分析:在 shell 脚本中,文本内容分析可以用于分析和处理文本数据,例如,在 menu 脚本中,可以使用 grep 命令来查找和显示特定用户信息。 8. Linux 重要命令:在 shell 脚本中,Linux 重要命令可以用于...
在Shell脚本中使用`su`命令时,我们可以通过以下两种方式切换用户并执行命令: 1. 使用Here Document(这里文档): ```bash su - test # 在这里写需要执行的命令 pwd; exit; EOF ``` 在这个例子中,`定义了一...
虽然在默认情况下,直接在`adb shell`中使用`tab`键可能不会立即工作,但可以通过以下步骤在CMD中启用`adb shell`的`tab`补全: - 首先,确保你的adb版本支持这个功能。较新的adb版本通常支持此特性。 - 在CMD中...
1. 命令历史记录:C shell提供了命令历史记录的功能,用户可以通过按上下箭头键来回顾之前输入的命令,而B shell不具备这个功能。 2. 文件名补全:C shell提供了文件名补全的功能,用户可以通过按Tab键来补全文件名...
* 在 shell 脚本中,可以使用 read 语句来实现与用户的交互,例如 `read choice`。 * 使用 echo 语句可以向用户输出信息,例如 `echo -n "警告 【$dataSource】 不存在!请确认!"`。 知识点五:文件读写 * 在 ...
值得注意的是,使用`su`命令切换用户时,通常需要输入目标用户的密码,但在脚本环境中,这可能会导致交互式问题。为避免这种情况,可以在系统中设置无密码切换用户,比如通过编辑`/etc/sudoers`文件,添加一条允许...
### 解决Unity不能调用shell脚本传递参数的问题 在Unity开发过程中,有时我们需要与操作系统进行交互,例如执行shell脚本来处理一些特定的任务。但在实际操作中,可能会遇到Unity无法正确调用shell脚本并传递参数的...
通过以上步骤,可以逐步排查并解决用户无法切换或登录的问题。在修复过程中,保持谨慎,确保每次更改都测试用户登录和切换功能,以免引入新的问题。如果问题仍然存在,可能需要进一步的系统调试或求助于专业的系统...
《SylixOS Shell用户手册》是翼辉操作系统的重要组成部分,主要涵盖了如何使用SylixOS操作系统中的Shell进行系统管理和任务执行的详细指南。Shell是操作系统提供的一种命令行接口,让用户能够通过文本指令与操作系统...
在 Linux 移植过程中,经常会遇到退格键失效的问题,这使得用户在输入命令时无法使用退格键删除错误的输入字符。本文将详细阐述如何解决这个问题。 问题现象:在 minicom 终端下,用户可以输入许多命令,查看各个...
### 使用Expect实现自动切换用户及执行命令 #### 一、Expect简介 `Expect`是一种用于自动化交互式命令的工具,它能模拟用户与基于文本的交互式程序进行对话。通过编写脚本来控制这些对话,我们可以实现一系列自动...
在Linux系统中,用户登录时使用的Shell是通过/etc/passwd文件来确定的。要查看系统中安装了哪些Shell类型,可以使用以下方法: a. 使用命令`chsh -l`列出已安装的Shell。 b. 直接查看`/etc/shells`文件的内容,该...
此外,还有其他替代方案来解决这个问题,比如使用`popen`函数,或者在服务器配置中开启FastCGI模式并调整其配置以允许执行命令。不过,这些方法可能需要更深入的服务器配置知识,对初学者来说可能较为复杂。 总之,...
通过本文的介绍,我们可以了解到在CDH环境中遇到切换用户失败问题的原因及其解决方法。关键在于理解`/sbin/nologin`的意义以及如何通过修改`/etc/passwd`文件来解决问题。同时,我们也扩展学习了CDH、HDFS以及...
在shell脚本中使用加密密码的轻量级解决方案
转换后的C代码仍然是可读的,只是对普通用户而言,阅读和理解C代码比直接阅读Shell脚本更为困难。此外,转换过程并不改变脚本的逻辑,因此,如果脚本中存在安全漏洞,转换后仍然存在。 在实际应用中,`shc`常用于...
交互方式修改密码 1. ssh 远程到主机; 2. 切换到root账号; [一般都是切换到root进行密码修改,如果普通用户修改自己的密码,要输入原密码,... 3. passwd username ... ...echo password | passwd testuser --stdin > /dev