TelnetClient (Apache Commons Net 3.7.2 API) 已连接 solaris10 但无法加载 ~/.bash_profile
Posted
技术标签:
【中文标题】TelnetClient (Apache Commons Net 3.7.2 API) 已连接 solaris10 但无法加载 ~/.bash_profile【英文标题】:TelnetClient (Apache Commons Net 3.7.2 API) connected solaris10 but can not load ~/.bash_profile 【发布时间】:2021-04-20 07:58:38 【问题描述】:我使用 TelnetClient (Apache Commons Net 3.7.2 API) 登录到 solaris10 但我发现 ~/.bash_profile 无法在用户的工作环境中加载。
我认为在 solaris10 中初始配置文件是 ~/.profile。 但是我需要在solaris10中使用bash shell。
那么我该怎么做才能让我的 TelnetClient 在登录后自动将 ~/.bash_profile 加载到我用户的工作环境中。
【问题讨论】:
Telnet shell 与其他登录 shell 没有什么不同。用户的默认 shell 是什么? that shell 的环境将以该 shell 的正常方式创建。请注意sh
是 NOT bash
- Linux 发行版倾向于将两者混为一谈,但这并不完全正确。
嗨安德鲁·亨利。当我使用相同的用户登录 Tera Team 的 solaris 服务器时,会加载配置文件 ~/.bash_profile。但是当我通过我的程序 TelnetClient 使用相同的用户登录时,它没有加载。如果如您所说 Telnet shell 与其他登录 shell 没有什么不同。这里应该是一样的,没有区别。但实际上 ~/.bash_profile 在我的程序 TelnetClient 登录时没有加载。
【参考方案1】:
我想我明白了。 我在源代码中新建了一个 TelnetClient 对象,如下所示:
private TelnetClient telnet = new TelnetClient();
我让 TelnetClient 构造函数默认将终端类型设置为“VT100”。 所以,我像这样编辑源代码:
private TelnetClient telnet = new TelnetClient("VT220");
不知道为什么 TelnetClient 在 Solaris10 终端类型为 "VT100" 下无法加载 ~/.bash_profile。 谁能告诉我原因?
无论如何,我需要在商业环境中进行正式测试,并确认此更改对 TelnetClient 登录其他类型的服务器没有影响。例如Linux
完成后我会报告测试结果。
【讨论】:
你可以尝试运行truss
对监听端口 23 的守护进程。这样的事情应该可以工作:truss -f -a -vall -o /path/to/output/file -p 912
。这将向您显示守护程序进行的所有系统调用以及它启动的所有进程,包括您的登录 shell。我不记得 Solaris 10 是运行实际的 telnetd
还是仅使用 inetd
来侦听端口 23。您可以查看 /etc/inetd.conf
以找出答案。 Solaris 11 使用 inetadm
而不是 /etc/inetd.conf
- Solaris 10 也可能。不过要小心truss
- 在这种情况下,它会捕获您的登录密码......以上是关于TelnetClient (Apache Commons Net 3.7.2 API) 已连接 solaris10 但无法加载 ~/.bash_profile的主要内容,如果未能解决你的问题,请参考以下文章