分类目录归档:CLI/Shell/Software

CentOS定时将路由器的外网IP发送到指定电子邮箱中

出于节约成本费用考虑,平时家用和小型商用的宽带都是ADSL虚拟拔号的。ADSL宽带的下载速度在4M左右时与光纤的差别不是很大,但唯一的问题就是没有固定IP,每次重新拔号都会重新获得动态的IP。这种情况下想进行远程维护服务器和网络就变得十分困难。在局域网内有Linux主机的情况下,我们可以考虑用如下的方法。

一、获得当前路由器的外网IP

curl ifconfig.me

就会获得一个路由器的IP地址。接下来,将这个IP地址通过Email发到指定的邮箱就。用 vim GetIP.sh 写一个角本,执行后,就会将外网IP发送到指定的电子邮箱中,脚本如下

 #!/bin/bash
 # Program:
 # Send Router IP of Internet to certain email# History:
 # 2014-03-08 cmzsteven First releasePATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin/:~/binexport PATHcurl ifconfig.me | mail -s "Router IP of Internet" changmingzhi@163.com

用命令 :wq 保存

二、定时执行

把这个脚本加到计划任务crontab中。如果你是管理员可以用

 vim /etc/crontab

加到系统的计划任务里也可以用 crontab -e 加入到用户的计划任务里。不管是加到哪里面,格式是一样的:

 1 */1 * * * root /root/GetIP.sh

上面是每小时的第一分钟执行一次,如果是每天1:01执行一次,格式为:

 1 1 */1 * * root /root/GetIP.sh

在作用“/n”的时候,如果前面还有“*”就要指定数值了,要不就是每一分钟发一次了。我之前设置为

 * */2 * * * root /root/GetIP.sh

结果就是每隔一分钟,就会收到一封邮件。3.剩下的工作就是在路由器里设置虚拟服务或者NAT转换了,这里就不过多的加以介绍了。

三、时程表的格式

f1 f2 f3 f4 f5 program
其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程式。
当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程式,其余类推
当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其余类推
当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其余类推
当 f1 为 a, b, c,… 时表示第 a, b, c,… 分钟要执行,f2 为 a, b, c,… 时表示第 a, b, c…个小时要执行,其余类推

原文地址:http://changmingzhi.blog.163.com/blog/static/29678048201428114710683/

Ubuntu安装VNC Server

尽管我们在大部分情况下用ssh登录Ubuntu服务器就好了,但是有时候我们的程序需要在图形界面下运行,这时我们就要用到vnc server这个软件了。在Ubuntu下安装vnc server很简单的,只要下面几步就可以了:

第一步,获取安装文件

sudo apt-get install vnc4server

第二步,修改VNC Password,不能太短

# vncpasswd

Password: ******

Verify:*****

第三步,检查防火墙,这个就不详细说明了

第四步,启动VNC server

# vncserver

第五步,通过客户端连接

地址后面加:1

本篇文章来源于 Linux公社网站(www.linuxidc.com) 原文链接:http://www.linuxidc.com/Linux/2007-11/9252.htm

如何在linux下将本机ip发送到指定邮箱?

NOW_IP=`/sbin/ifconfig ppp0 |grep inet|awk {'print $2'}|cut -f2 -d:`
 echo $NOW_IP|mail -s "IP" your@emailaddress

如果是ADSL拨号,将以上命令加入/etc/ppp/ip-up.local文件末尾,让每次拨号后执行以上命令。

#vi /etc/ppp/ip-up.local

也可定时执行,将最上方脚本添加进计划任务conrtab中,具体设置参见CentOS定时将路由器的外网IP发送到指定电子邮箱中

Linux下邮件(mail)查收

Linux下mail使用技巧

登录LINUX系统后,经常会看到”you have mail”,却苦于不知道如何查看,相信菜鸟们都遇到过,偶在网上用“linux mail”找了很久,但大都是介绍mail服务器的,黄天总算没负有心人,在洪恩在找到一篇介绍基础的文章,不敢独享。

系统提供了用户之间通信的邮件系统,当用户打开终端注册登录时发现系统给出如下信息:
you have mail.

这时用户可通过键入mail命令读取信件:

$ mail

mail程序将逐个显示用户的信件,并依照时间顺序,显示最新的信件。每显示一段信件,mail都询问用户是否要对该信件作些处理。若用户回答d,则表示 删除信件;若仅按回车键,表示对信件不作任何改动(信件仍旧保存,下次还可读这一信件);若回答p,则要求重复显示信件;s filename表示要把信件存入所命名的文件;若回答q,表示要从mail退出。

我们在本章的第一个例子中演示了如何写一封信,作为练习,你可送信件给自己,然后键入mail读取自己发的信件,看看会有什么效果。(发信给自己是一种设置备忘录的方法)。

$mail frank 给自己写信

subject: test

This is a mail test

CRL-d

EOT

$

$mail 查看信件

“/var/spool/mail/frank:”1 message 1 new

>Nfrank@xteam.xteamlinux.comThu Mar 25 11:00 13/403 “test”

&

Message 1:

From frank Thu Mar 25 11:00:25 1999/3/25

Received: (fromfrank@localhost)

by xteam.xteamlinux.com(8.8.4/8.8.4)

id LAA05170 for frank;Thu 25 Mar 1999 11:00:25 GMT

Date: Thu,25 Mar 1999 11:00:25 GMT

From:RHS Linux User <root@newtradepowre.com>

Message-Id:<199903251142.LAA05170@xteam.xteamlinux.com>

To:frank@xteam.xteamlinux.com

Subject:test

Status:R

This is a mail test

&

mail命令还有很多其它用法,例如发送事先准备好的信件,或一次送信给若干人。还可以用其它方法送信件。

另附message的使用技巧:

当Linux系统处于多用户的情况下,有时在终端上会突然显示出下述信息:

Message from renee tty2…

并伴随出现一阵嘟嘟响声。这是用户renee想和你通话而产生的信号。若你用如下命令响应他:

$ write renee

这就建立起了你和renee的通信线路,renee在他的终端上键入的内容同时显示在你的终端上,反之你键入的内容也显示在renee的终端上。为区分终 端上哪些是你输入的,哪些是renee输入的,我们使用如下通话协议:(o)表示一段话说完,并让对方发话,(oo)代表通话结束并退出程序。

renee’s terminal: frank terminal:

[renee@xteam renee]$ write frank

$ Message from renee tty2…

$write renee

[renee@xteam renee]$Message from you tty1…

did you forget lunch? (o)

did you forgeet lunch? (o)

ten minutes (o)

ten minutes (o)

ok (oo)

ok (oo)

ctl-d

EOF

Ctl-d

EOF

[renee@xteam renee]$ $

除CTL-d键外,也可以使用DELETE退出write命令。

如果你不愿意别人干扰你的工作,可以使用mesg命令拒绝接受通话。当你向一个拒绝接收通话的用户发写命令、或者向没有注册的用户要求通话时,write命令会显示不能通话的原因。

转自:http://edu.codepub.com/2010/0413/21978.php

Linux系统下mail命令

在Linux系统下mail命令的测试

1. 最简单的一个例子:

mail -s test yangfang@fudan.edu.cn

这条命令的结果是发一封标题为test的空信给后面的邮箱,如果你有mta并且后面的邮箱不会挡这种可能莫名奇妙的信的时候,就能收到这封信了。如果你不想被这种乱七八糟的事情干扰,后面的邮箱请使用本地帐户。

2. 第二个例子:

三种常用格式发信

mail -s test yangfang@fudan.edu.cn #第一种方法,你可以把当前shell当成编辑器来用,编辑完内容后Ctrl-D结束

echo “mail content”|mail -s test yangfang@fudan.edu.cn #第二种方法,我用的最多,可能是喜欢管道的缘故吧

mail -s test yangfang@fudan.edu.cn < file #第三种方法,以file的内容为邮件内容发信

其实你很容易发现mail从标准输入读取文件内容并发信,我也只想让你知道这一点,到此,第二个例子结束。

3. 第三个例子,带附件的邮件

如果你的系统里没有uuencode命令的话,请先安装sharutils(yum install sharutils)

uuencode 需要两个参数,第一个是你要发送的文件(们),当然这个也可以用管道来做,第二个是显示的文件名

uuencode /home/yfang/a.gif a.gif|mail -s pictest yangfang@fudan.edu.cn

tar czf – /home/yfang/ | uuencode home.tgz |mail -s pictest yangfang@fudan.edu.cn

ps: 顺便补一句,slackware下的mail好像有一个-a参数,可以直接添加附件,我没有用过。

转自:http://www.svn8.com/linux/accidence/20091016/10858.html

Ubuntu下使用动态域名

3322的更新还有更加简单的办法,连客户端都不用安装,也不用配置文件,不用知道IP。

www.3322.org网站上介绍的是用lynx(一般的Linux,BSD都自带),就可以了!
使用方法:

lynx -mime_header -auth=用户名:密码 "http://members.3322.net/dyndns/update?system=dyndns&hostname=域名"

而Ubuntu/Debian默认带的是w3m,所以要将命令改成:

w3m -no-cookie -dump http://username:password@members.3322.net/dyndns/update?system=dyndns&hostname=your_domain.f3322.org

把这条命令放在计划任务crontab(编辑用户的Crontab文件: crontab -e ,用户所建立的Crontab文件存于/var/spool/cron中,其文件名与用户名一致。 )里15分钟执行一次就能定时更新了。

*/15 * * * * w3m -no-cookie -dump 'http://username:password@members.3322.net/dyndns/update?system=dyndns&hostname=your_domain.f3322.org'>/dev/null

顺便,使用w3m查询自己公网IP的方法:

w3m -no-cookie -dump www.ip138.com|grep -o "[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}"

ubuntu 14.04 下成功安装gaussian 03(g03)和gaussian 09(g09)和gview及常见错误解决

以下方法对g03和g09均可行。

一、解压

首先对文件进行解压缩,我的文件名是G09.B01.LINUX_E64-930X.tgz,文件在桌面,你应填上你对应的文件目录和文件名,可用tab键补全。

tar -xvf Desktop/G09.B01.LINUX_E64-930X.tgz

注意:

1、应注意文件是否解压完全,我第一次安装的时候,exe后缀的文件不知什么原因都没有解压出来,所以安装一直失败,重新解压一次又好了;

2、尽量不要使用sudo,倘若你的Home目录权限有问题,使用加sudo解压后再将权限恢复正常,或者通过创建一个用户组。

改变文件夹权限

chmod -R u=755 g09

创建组及用户,改变文件及文件夹的组及用户

sudo groupadd g09users 创建组
sudo useradd g09 -g gaussuser 创建组用户
chgrp -R g09users  g09
chown -R g09users:gaussuser g09

将用户添加进组

usermod -G g09users gaussuser

二、安装

其实,安装的过程就是设置变量的过程。
进入主目录,Ctrl+H显示隐藏文件,打开.bashrc文件,在文件末尾加上以下内容(安装g03请把g09全部替换成g03就行了),注意你的g09的目录和你的用户名,按照以下的格式修改就行。(注意:经过我多次安装,发现修改主目录的/home/yourusername/.bashrc,用su获得超级用户的权限后,每次仍需要使用source /home/yourusername/.bashrc才能够成功设置环境变量,我发现直接修改/root/.bashrc便不用每次都需要再重新设置环境变量

#gaussian09
export g09root=/home/yourusername
GAUSS_EXEDIR=$g09root/g09/
export GAUSS_SCRDIR=/home/yourusername/g09/scratch
LD_LIBRARY_PATH=$g09root/g09/:$LD_LIBRARY_PATH
PATH=$g09root/g09/:$PATH
export g09root GAUSS_EXEDIR GAUSS_SCRDIR LD_LIBRARY_PATH PATH
source $g09root/g09/bsd/g09.profile

最后,在g09的目录里创建scratch目录

三、运行

gauss-procedure-full-edited

(最后的Error是由于我Ctrl+C终止程序)

运行时的命令用sudo提示permission denied,所以应当用su获取超级权限。

取得超级用户权限,先给超级用户设置密码,终端输入以下命令,然后输入密码。

sudo passwd root

然后,输入以下命令,输入刚设置的密码

su -

这样进入的是root的根目录/root,需切换到用户目录/home/yourusername,亦即我们的g09目录存放的目录。

cd /home/username

输入以下命令,第一条是避免Segmentation fault(段错误)该命令只能在su下执行,在sudo下会提示权限不足(Permission denied),该命令也可添加进/etc/rc.loacal,开机自动执行,第二条是运行命令,”./g09/g09″是我的g09目录下的g09文件的地址,其中tasks是我的任务文件gif存放目录,可在命令末尾加上&表示后台执行。

echo 0 > /proc/sys/kernel/randomize_va_space
./g09/g09 tasks/xxx.gif &

rc.local-gauss

四、安装gview

在.bashrc末尾加上以下内容
export GV_DIR=/home/yourusername/gv/
export LIBPATH=/home/yourusername/gv/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/yourusername/gv/lib
PATH=$PATH:/home/yourusername/gv/

五、常见错误

1、forrtl: No such file or directory
没有创建scratch目录,或者目录路径设置不对,这是Gauss的输出目录。

2、Warning: omp_set_num_threads (4) greater than available cpus (2)
这是gif文件设置不对,cpu的核数为2却设成了4,只要打开改回电脑应有的cpu的个数就行了

3、Segmentation fault
Erroneous write during file extend. write -1 instead of 4096
Probably out of disk space.
Write error in NtrExt1: Bad address
Segmentation fault
解决办法:
sudo echo 0 > /proc/sys/kernel/randomize_va_space
最好写进/etc/rc.local文件(ubuntu系统,其他系统写进相应文件),令其开机自动加载该命令,省时省力。

4、ntrex1: Bad file descriptor
Error: segmentation violation
rax 0000000000000000, rbx 00007ffffffdecb0, rcx ffffffffffffffff
rdx 00000000000029b8, rsp 00007ffffffdebc8, rbp 00007ffffffdecc0
rsi 000000000000000b, rdi 00000000000029b8, r8  00002aaaaaaf2300
r9  0000000000000000, r10 00007ffffffde990, r11 0000000000000202
r12 00000000ffffffff, r13 000000000061c830, r14 0000000000000001
r15 0000000000010000
— traceback not available
Aborted (core dumped)
gif文件%chk设置错误,因为Linux下没有Windows下的分区和目录结构,例如,%chk=D:\he-test-c.chk,把分区号去除就可以了,例如%chk=he-test-c.chk。
5、运行g09后出错,查看log文件,信息如下:
Entering Gaussian System, Link 0=g09
Input=1.com
Output=1.log
Files in the Gaussian directory are world accessible.
This must be fixed.
原因是g09文件夹权限太高,如果整个改成777就有可能出这个问题。解决办法是除了scratch目录以外,均用755或者750等。(所以之前建议用更改用户组的办法来实现权限)。

Linux命令cp文件夹时添加正斜杠和通配符的各种用法总结

终于把cp的各种情况做了个总结。文件夹就是一种特殊的文件,但还是有一些不同的地方。

注:[^]表示空格

假设/a目录下有文件1、2、3

cp^-R^/a/*^/b

等同于cp^-R^/a/*^/b/

这相当于把/a目录下所有文件拷贝到/b目录下,如果要包括/a目录下所有的子目录和文件,请加-R选项或-r选项,-r选项的不同于-R之处在于尝试打开目的地文件前先删除己存在的目的地文件。

cp^-R^/a^/b/c

分两种情况讨论

如果/b/c不存在

则创建。并且把/a中所有的文件和子目录都复制到/b/c中。相当于克隆了一个目录。

如果/b/c存在

将把/a文件夹本身复制到/b/c中,复制成功后,目录结构为/b/c/a

cp^-R^/a/^/b

出错,提示:

cp: omitting directory ‘/a/’

cp^-R^/a/^/b/

出错,提示:

cp: omitting directory ‘/a/’

解决:各种Linux发行版下的pppoe虚拟拨号命令,ADSL、宽带上网的混乱

点击阅读:宽带、窄带,ADSL、pppoe,虚拟拨号等名词解释

当初在虚拟机中第一次安装好了红帽,在百度上Google了N次,逛了无数的论坛、博客,看了无数的帖子、文章,在网上找了各种方法,怎么也找不到“宽带”连上网的方法。

后来用Ubuntu也是这样,ubuntu自带的客户端根本连不上网,想找个连上网的办法吧,结果我见到的回答全是牛头不对马嘴,真是让人气馁。

虽然Linux各种发行版的命令大体一样,但有一些还是不同的。

Red Hat Linux

Red Hat Linux下面使用的是ADSL:调制解调器命令
作用:ADSL调制解调器命令用来配置宽带调制解调器工作。
说明:ADSL命令包括一组命令。首先检查是否安装了PPPOE软件,并且版本号要高于3.5-1。如果版本低于这个版本号,先升级软件版本(最新版本rp-ppoe-3.5-3.i386.rpm)。升级命令如下:
[root@sample ~]# rpm Uvh
rp-ppp-3.5-3.i386.rpm

友情提示:我认为升级并不是必要的,如果你确定要升级,先在其它电脑上下载最新PPPOE软件,放在“/Home/你的用户名/”下面(因为终端默认路径就是这个文件夹),再执行上面的命令即可注意命令的大小写、文件名为你的下载的文件的文件名

系统产生如下四个命令。

  • adsl-setup:配置DNS、用户账号、密码、其他选项。
  • adsl-start:使用ADSL连接互联网命令。
  • adsl-stop:断开ADSL和互联网连接命令。
  • adsl-status:检测ADSL连接状态命令。

[root@sample ~]# adsl-setup ← 建立ADSL连接

Welcome to the ADSL client setup. First, I will run some checks on
your system to make sure the PPPoE client is installed properly…

LOGIN NAME

Enter your Login Name (default root): ← 填入ADSL连接的用户名

INTERFACE

Enter the Ethernet interface connected to the ADSL modem
For Solaris, this is likely to be something like /dev/hme0.
For Linux, it will be ethX, where ‘X’ is a number.
(default eth0): ← 指定网络接入设备,一块网卡的情况下,一般为默认eth0

Do you want the link to come up on demand, or stay up continuously?
If you want it to come up on demand, enter the idle time in seconds
after which the link should be dropped. If you want the link to
stay up permanently, enter ‘no’ (two letters, lower-case.)
NOTE: Demand-activated links do not interact well with dynamic IP
addresses. You may have some problems with demand-activated links.
Enter the demand value (default no): ← 直接按回车,接受默认设置

DNS

Please enter the IP address of your ISP’s primary DNS server.
If your ISP claims that ‘the server will provide dynamic DNS addresses’,
enter ‘server’ (all lower-case) here.
If you just press enter, I will assume you know what you are
doing and not modify your DNS setup.
Enter the DNS information here: ← 如果知道DNS服务器的信息在此填入。不知道的情况按回车跳过《全国DNS服务器IP地址》下载地址:http://olseeling.qjwm.com/down_1249888.html

PASSWORD

Please enter your Password: ← 输入ADSL的连接密码
Please re-enter your Password: ← 再次确认输入ADSL的连接密码

USERCTRL

Please enter ‘yes’ (two letters, lower-case.) if you want to allow
normal user to start or stop DSL connection (default yes): no ← 填入no,不允许一般用户控制PPPoE的连接

FIREWALLING

Please choose the firewall rules to use. Note that these rules are
very basic. You are strongly encouraged to use a more sophisticated
firewall setup; however, these will provide basic security. If you
are running any servers on your machine, you must choose ‘NONE’ and
set up firewalling yourself. Otherwise, the firewall rules will deny
access to all standard servers like Web, e-mail, ftp, etc. If you
are using SSH, the rules will block outgoing SSH connections which
allocate a privileged source port.

The firewall choices are:
0 – NONE: This script will not set any firewall rules. You are responsible
for ensuring the security of your machine. You are STRONGLY
recommended to use some kind of firewall rules.
1 – STANDALONE: Appropriate for a basic stand-alone web-surfing workstation
2 – MASQUERADE: Appropriate for a machine acting as an Internet gateway
for a LAN
Choose a type of firewall (0-2): 0 ← 输入0,不在这里使用防火墙

Start this connection at boot time

Do you want to start this connection at boot time?
Please enter no or yes (default no): yes ← 填入yes,在系统启动时自动连接ADSL

** Summary of what you entered **

Ethernet Interface: eth0
User name: caun870293@ca.dti.ne.jp
Activate-on-demand: No
DNS: Do not adjust
Firewalling: NONE
User Control: no
Accept these settings and adjust configuration files (y/n)? y ← 配置信息确认无误后,键入y同意设置
Adjusting /etc/sysconfig/network-scripts/ifcfg-ppp0
Adjusting /etc/ppp/chap-secrets and /etc/ppp/pap-secrets
(But first backing it up to /etc/ppp/chap-secrets.bak)
(But first backing it up to /etc/ppp/pap-secrets.bak)

…………

…………

Congratulations, it should be all set up!

Type ‘/sbin/ifup ppp0′ to bring up your xDSL link and ‘/sbin/ifdown ppp0′
to bring it down.
Type ‘/sbin/adsl-status /etc/sysconfig/network-scripts/ifcfg-ppp0′
to see the link status.
[root@sample ~]# adsl-start ← 启动ADSL连接

[root@sample ~]# ← 稍等片刻后若启动成功后出现提示符(无任何提示即意味着连接成功)

Ubuntu

1、打开应用程序菜单,依次选择“附件”->“终端”。
2、在弹出终端窗口后
[root@sample ~]# sudo pppoeconf <- 输入完成后回车
3、然后会提示用户输入当前Ubuntu管理员用户的密码,输入完成后回车。询问网络设备,一般选择“是”,进行检测,然后选择“是”。
4、之后会提示输入用户的ADSL用户名(也就是账号)和密码,在输入账号时把原来的user删掉,其他的除密码之外的问题全部回答“是”(Yes)就可以了。
5、最后会提示用户是否开机自动拨号,选择“是”(Y)的话,默认开机会没有任何提示的情况下拨号,直接可以上网。如果选择“否”(N)的话,需要拨号时手工进入终端输入
[root@sample ~]# sudo pon dsl-provider <- 输入完成后回车
6、经常使用的命令。
pon:启用adsl链接。
poff:结束adsl连接。
plog:查看adsl的提示信息,作为调试用。
ifconfig ppp0:查看是否有ppp0接口。
route -n:查看默认网关是否正确。
nslookup:查看DNS是否能够正确解析。
这些命令可以帮助大家解决ADSL上网遇到的问题,也可以用来调试ADSL。

CentOS

同Red Hat Linux

BackTrack Linux

同Red Hat Linux

Slax

同Red Hat Linux