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 的正常方式创建。请注意 shNOT 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的主要内容,如果未能解决你的问题,请参考以下文章

Caused by java lang ClassNotFoundException org apache comm

如何通过 Telnet 发送字符串?

httpClient_3.x版用法

Linux安装Apache并配置服务转发

excel表格数据导入导出

Apache 能够在 Web 服务器根目录之外执行文件