我一直在尝试让sqlplus从我的OS X机器连接到Oracle.我在这里问了另一个问题.
有人建议我试试telnet.咨询手册页,我试过:
[ ethan@gir ~ ]$ telnet DBHOST:1521
Trying xxx.xxx.xxx.xxx...
telnet: connect to address xxx.xxx.xxx.xxx: Operation timed out
telnet: Unable to connect to remote host
Run Code Online (Sandbox Code Playgroud)
也...
[ ethan@gir ~ ]$ telnet DBHOST 1521
Run Code Online (Sandbox Code Playgroud)
......结果相同.
我不确定如何解释这些结果.看起来像你在任何情况下所期望的那样.你不会这样做......
$ ssh some_mysql_host:3306
Run Code Online (Sandbox Code Playgroud)
telnet与Oracle有何不同?
或许我不明白他们的意思.
如果有人可以帮助我理解如何使用telnet测试与Oracle的连接,我将不胜感激.
HI,
我有一个暴露telnet接口的设备,您可以使用用户名和密码登录,然后操纵设备的工作.
我必须编写一个C程序,它隐藏了客户端的telnet方面,而是为用户提供了一个控制设备的接口.
什么是一个好的方法来继续.我尝试编写一个简单的套接字程序,但它在登录提示符处停止.我的猜测是我没有遵循TCP协议.
有没有人尝试过这个,有没有一个开源库可以做到这一点?
谢谢
补充:最终我希望通过web api/webservice公开它.该平台是linux.
我知道您可以使用HTTP协议标准telnet并与HTTP服务器协商 - 例如:
telnet google.com 80
Trying 173.194.70.139...
Connected to google.com.
Escape character is '^]'.
GET / HTTP.1.1
HOST: my.com
Run Code Online (Sandbox Code Playgroud)
我得到回应:
HTTP/1.0 400 Bad Request
Content-Type: text/html; charset=UTF-8
Content-Length: 925
Date: Wed, 18 Jul 2012 19:17:26 GMT
Server: GFE/2.0
Run Code Online (Sandbox Code Playgroud)
但我的问题是我可以用SSH协议做同样的事情吗?
我已经搜索了web和stackoverflow很长一段时间但它没用.
我在2节点集群设置中安装了hadoop yarn 2.2.0.但出了点问题.当我在主节点上使用start-dfs.sh和start-yarn.sh启动hadoop守护进程时,它们在master和slave中成功运行(我的主机的主机名是RM,我的slave的主机名是slv).他们可以成功地互相争斗.但是当我想要运行一个作业时,会出现以下错误:
14/01/02 04:22:53 WARN util.NativeCodeLoader:无法为你的平台加载native-hadoop库...使用内置的java类适用于14/01/02 04:22:56 WARN hdfs.DFSClient: DataStreamer Exception org.apache.hadoop.ipc.RemoteException(java.io.IOException):File/user/root/QuasiMonteCarlo_1388665371850_813553673/in/part0只能复制到0个节点而不是minReplication(= 1).正在运行0个数据节点,并且此操作中不排除任何节点.org.apache.hadoop.hdfs.server.blockmanagement.BlockManager.chooseTarget(BlockManager.java:1384)org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:2477)org.apache位于org.apache.hadoop.hdfs.protocol的org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.addBlock(ClientNamenodeProtocolServerSideTranslatorPB.java:387)的.hadoop.hdfs.server.namenode.NameNodeRpcServer.addBlock(NameNodeRpcServer.java:555) .proto.ClientNamenodeProtocolProtos $ ClientNamenodeProtocol $ 2.callBlockingMethod(ClientNamenodeProtocolProtos.java:59582)org.apache.hadoop.ipc.ProtobufRpcEngine $ Server $ ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:585)org.apache.hadoop.ipc.RPC $ Server.call(RPC.java:928)位于org.apache.hadoop.ipc.Server $ Handler $ 1.run(Server.java:2048)org.apache.hadoop.ipc.Server $ Handler $ 1.run(Server. java:2044)at java.security.AccessController.doPrivileged(Native Method)at javax.security.auth.Subject.doAs(Subject.java:416)at o org.apache.hadoop.ipc.Server $ Handler.run(Server.java:2042)中的rg.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1491)
at org.apache.hadoop.ipc.Client.call(Client.java:1347)
at org.apache.hadoop.ipc.Client.call(Client.java:1300)
at org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:206)
at com.sun.proxy.$Proxy9.addBlock(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:622)
at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:186)
at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:102)
at com.sun.proxy.$Proxy9.addBlock(Unknown Source)
at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.addBlock(ClientNamenodeProtocolTranslatorPB.java:330)
at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.locateFollowingBlock(DFSOutputStream.java:1226)
at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.nextBlockOutputStream(DFSOutputStream.java:1078)
at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.run(DFSOutputStream.java:514)
Run Code Online (Sandbox Code Playgroud)
在datanode日志中,此日志存在:
2014-01-02 04:40:31,616 WARN org.apache.hadoop.hdfs.server.datanode.DataNode:连接服务器时出错:RM/192.168.1.101:9000 …
我正在编写一个Telnet库,其中一个命令需要在根据RFC854发送的TCP数据包上设置URGENT标志:
通过TCP发送操作发送同步,其中设置了紧急标志,DM作为最后(或唯一)数据八位字节.
我怎样才能做到这一点?
我正在实现一个简单的HTTP客户端,它只连接到Web服务器并获取其默认主页.在这里,它很好用:
using System;
using System.Net.Sockets;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
TcpClient tc = new TcpClient();
tc.Connect("www.google.com", 80);
using (NetworkStream ns = tc.GetStream())
{
System.IO.StreamWriter sw = new System.IO.StreamWriter(ns);
System.IO.StreamReader sr = new System.IO.StreamReader(ns);
string req = "";
req += "GET / HTTP/1.0\r\n";
req += "Host: www.google.com\r\n";
req += "\r\n";
sw.Write(req);
sw.Flush();
Console.WriteLine("[reading...]");
Console.WriteLine(sr.ReadToEnd());
}
tc.Close();
Console.WriteLine("[done!]");
Console.ReadKey();
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我从上面的代码中删除下面的行时,程序会在sr.ReadToEnd上阻塞.
req += "Host: www.google.com\r\n";
Run Code Online (Sandbox Code Playgroud)
我甚至用sr.Read替换了 …
我可以在Perl中设置一个telnet连接没有问题,刚刚发现了Curses,我想知道我是否可以一起使用这两个连接来从telnet会话中获取输出.
我可以使用下面的简单脚本在行,列的基础上查看STDOUT的内容:
use Curses;
my $win = new Curses;
$win->addstr(10, 10, 'foo');
$win->refresh;
my $thischar=$win->inch(10,10);
print "Char $thischar\n";
Run Code Online (Sandbox Code Playgroud)
使用下面我可以打开一个telnet连接并发送\ receive命令没有问题:
use net::telnet;
my $telnet = new Net::Telnet (Timeout => 9999,);
$telnet->open($ipaddress) or die "telnet open failed\n";
$telnet->login($user,$pass);
my $output = $telnet->cmd("command string");
Run Code Online (Sandbox Code Playgroud)
...但我真正想做的是获取telnet响应(包括终端控制字符),然后使用curses在行/列上搜索.有谁知道我可以将两者连接在一起的方式?在我看来,curses只能在STDOUT上运行
我一直在尝试创建一个期望脚本,通过telnet自动登录我的设备
如果expect命令没有多种可能性,则脚本工作正常,登录到设备.
#!/usr/bin/expect
set timeout 20
set ip [lindex $argv 0]
set port [lindex $argv 1]
set user [lindex $argv 2]
set password [lindex $argv 3]
spawn telnet $ip $port
expect "'^]'." sleep .1;
send "\r";
sleep .1;
expect "login:"
send "$user\r"
expect "Password:"
send "$password\r";
interact
Run Code Online (Sandbox Code Playgroud)
上面的脚本工作正常,并在我传递正确的参数时成功登录.但是,一旦我向expect命令添加了额外的分支(用于错误处理),脚本就会在提示符下卡住.login:一段时间后它会打印脚本错误
任何帮助?下面的错误脚本.
#!/usr/bin/expect
set timeout 20
set ip [lindex $argv 0]
set port [lindex $argv 1]
set user [lindex $argv 2]
set password [lindex $argv 3]
spawn telnet $ip $port …Run Code Online (Sandbox Code Playgroud) 我想写一个远程控制台,像telnet服务器一样工作.用户可以使用telnet登录服务器,然后编写一些命令来完成一些工作.
一个很好的例子是路由器操作系统的控制台.我现在困惑的是,我可以接受用户的输入,做一些然后打印一些文本,但我想使用ncurses使控制台具有更多功能(例如"cmd auto-complete",语法颜色...... ),那我该怎么办呢?因为控制台在用户端,如果服务器调用ncurses API,它只会改变服务器上的东西......
也许这是一个愚蠢的问题,但我真的是新手.任何建议表示赞赏.