linux 自动登录脚本

Posted by & filed under Uncategorized.

linux 自动登录脚本 linux脚本中如果包含需要输入密码的命令, 无需手动输入密码,利用expect即可实现自动登陆,示例脚本如下:

expect脚本实现自动和交互式任务进行通信,而无需人的干预,由一系列expect-send对组成 可以创建脚本用来实现对命令或程序的输入,而这些命令和程序是期望从终端(terminal)得到输入,一般来说这些 输入都需要手工输入进行的。Expect则可以根据程序的提示模拟标准输入提供给程序需要的输入来实现交互程序执行。 在ubuntu中并没有默认安装expect脚本,运用sudo apt-get install expect安装,然后调用命令whereis expect查看安装目录,一般默认路径均在/usr/bin/下,然后在脚本第一行引入此脚本:#!/usr/bin/expect, spawn是进入expect环境后才可以执行的expect内部命令,如果没有装expect或者直接在默认的SHELL下执行是找不到spawn命令的 interact使登陆完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了。如果没有这一句登录完成后会退出,而不是留在远程终端上 Read more […]

linux环境下原始套接字使用

Posted by & filed under Uncategorized.

linux环境下原始套接字使用

第一个参数:协议族 AF_INET 代表TCP/IP协议 第二个参数:SOCKET类型 第三个参数:协议类型(注意:如果指定协议为0时,原始套接字可以接收内核传递给原始套接字的任何IP数据包,且只有超级用户才可以创建原始套接字。)常见的有IPPROTO_TCP,IPPROTO_UDP和IPPROTO_ICMP,在用这种方式构造原始IP报文时,第三个参数protocol不能用IPPROTO_IP,如果使用IPPROTO_IP,则会报错: Protocol not supported。 对于超级用户,很多文档运用setuid(getuid())这种方法,但是在我的程序中并不能解决问题,或许是getuid()获得的并非是正确的属于超级用户的id。查阅资料,可以在程序运行之前输入命令:sudo Read more […]

ubuntu系统安装netbeans软件

Posted by & filed under Uncategorized.

ubuntu系统安装netbeans软件 1. 下载JDK JDK下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html; 安装过程:将解压得到的文件(如jdk1.7,文件夹名可更改)加到配置jdk的目录(如/usr/lib/java):sudo mv jdk1.7 /usr/lib/java 2. 配置环境变量 使用命令 sudo gedit /etc/environment ,做如下配置:

保存修改。 3. 设置默认jdk 使用命令:

根据提示选择刚刚配置的jdk1.7 4. 执行命令 java -version 检验是否成功 5. 下载netbeans软件 下载地址:http://netbeans.org/downloads/index.html; 6. 安装netbeans软件 cd 到下载的目录修改权限:sudo chmod +x netbeans-7.1.1-ml-javaee-linux.sh安装命令./netbeans-7.1.1-ml-javaee-linux.sh接下来就如windows下按照提示安装完成即可。 Read more […]

pthread_kill函数

Posted by & filed under Uncategorized.

pthread_kill函数 int pthread_kill(pthread_t thread, int sig); pthread_kill并不是kill,而是向线程发送signal。大部分signal的默认动作是终止进程的运行,所以,我们要对信号进行捕捉并加上处理函数,系统不允许线程捕获SIGKILL和SIGSTOP信号。 向指定ID的线程发送sig信号,如果线程代码内不做处理,则按照信号默认的行为影响整个进程,也就是说,如果你给一个线程发送了SIGQUIT,但线程却没有实现signal处理函数,则整个进程退出。pthread_kill(threadid, SIGKILL)也一样,杀死整个进程。当第二个参数位0时,则可以查看指定线程是否还存活。 如果要获得正确的行为,就需要在线程内实现signal(SIGKILL,sig_handler)了。 pthread_kill的返回值: 成功:0 线程不存在:ESRCH 信号不合法:EINVAL

上述的代码就可以判断线程是不是还活着了。http://www.cnblogs.com/resound/archive/2011/07/26/2117243.html linux信号 每一种信号都被OSKit给予了一个符号名,对于32位的i386平台而言,一个字32位,因而信号有32种。下面的表给出了常用的符号名、描述和它们的信号值。 符号名  信号值 Read more […]

KeepAlive使用

Posted by & filed under Uncategorized.

KeepAlive使用 如果TCP连接被对方正常关闭,也就是说,对方是正确地调用了closesocket(s)或者shutdown(s)的话,那么recv或send调用就能马上返回,并且报错。这是由于closesocket()或者shutdown()有个正常的关闭过程,会告诉对方“TCP连接已经关闭,你不需要再发送或者接受消息了”。但是,如果是网线突然被拔掉,TCP连接的任何一端的机器突然断电或重启动,那么这时候正在执行recv或send操作的一方就会因为没有任何连接中断的通知而一直等待下去,也就是会被长时间卡住。这种情形解决的办法是启动TCP编程里的keepAlive机制。 keepalive作用:检测连接是否正常 在维护检测TCP的正常连接方面 SOL_SOCKET类提供了SO_KEEPALIVE Read more […]

TCP连接中断

Posted by & filed under Uncategorized.

tcp连接中断 tcp连接断开情况: 连接结束正常中断 连接非正常中断 a.在连接没有中断之前强制退出某端程序; 如果发送方被强制断开连接,接受方接受大小为0,表示对端程序已经退出; 如果接受方被强制断开连接,根据TCP协议的规定,发送方再次发送数据会收到一个RST响应,再往对端发送数据时,系统会发出一个SIGPIPE信号给进程,告诉进程这个连接已经断开。简而言之,两次发送数据到已经断开连接的套接字会产生SIGPIPE信号,程序退出。 根据信号的默认处理规则SIGPIPE信号的默认执行动作是terminate(终止、退出),所以发送端程序会退出,如果不想调用系统默认处理方法,可调用自己的信号处理方法, 如: Read more […]