shell登陆问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell登陆问题相关的知识,希望对你有一定的参考价值。
怎么用脚本自动登录呢
比如我有aa,bb用户,密码分别对应aa,bb
我在aa用户上想切换登录到bb
命令是 su - bb,然后提示要输入密码bb
现在我想用一个脚本直接执行就能登陆到bb不需要交换输入密码,应该怎么做?
希望能从原理上讲述。。。。谢谢,
#!/bin/bash
su - bb<bb.txt
bb.txt里面输入的是bb
执行后报错standard in must be a tty
根据报错信息,该登录用户要求一个tty设备。基于安全策略,这是默认设置。
所以,可以在/etc/sudoers文件中加上下面这句试试:
Defaults:bb !requiretty
或者,不修改任何东西,直接用Expect脚本。Expect是交互式脚本的首选。
#!/usr/bin/expectspawn su - bb
expect "assword: " #前面的p小写大写都无所谓
send "bb\\r"
expect eof
exit 参考技术A 下面有如此正确的回答楼主也不采纳,
楼主做人要厚道啊.
Bash shell的配置文件
Bash 的配置文件:
两类:
Profile 类:为交互式登陆的 shell进程提供配置
Bashrc 类:为非交互式登陆的 shell进程提供配置
登陆类型:
交互式登陆 shell进程:
直接通过某终端输入账号和密码后登陆打开的 shell进程:
使用 su命令:su – centos ,或者使用 su -l centos 执行的登陆切换;
非交互式登陆 shell进程:
Su centos 执行的登陆切换;
图形界面下打开的终端;
运行脚本
Profile 类:
全局:对所有用户都生效;
/etc/profile /etc/profild.d/*.sh
用户个人:仅对当前用户有效;
~/.bashrc
功用:
1. 定义本地变量;
2. 定义命令别名;
注意:仅管理员可修改全局配置文件;
交互式登陆 shell进程:
/etc/profile-->/etc/profile.d/*-->~/.bash_profile-->/.bashrc-->/etc/bashrc
非交互式登陆 shell进程:
~/.bashrc-->/etc/bashrc-->/etc/profile.d/*
命令行定义的特性,例如变量和别名作用域为当前 shell进程的生命周期;
配置文件定义的特性,只对随后新启动的 shell 进程有效;
让通过配置文件定义的特性立即生效;
(1) 通过命令行重复定义一次;
(2) 让 shell进程重读配置文件;
以上是关于shell登陆问题的主要内容,如果未能解决你的问题,请参考以下文章