admin

12月 182013
 

sudo apt-get install openssh-server

确认

ps -e |grep ssh

正常情况下结果为:

1584 ?        00:00:00 ssh-agent
2299 ?       00:00:00 sshd

1.3如果只有ssh-agent,则openssh-server还没有启动,需要/etc/init.d/ssh start,如果看到sshd那说明openssh-server已经启动了。

2.ssh-server配置文件位于/etc/ssh/sshd_config,在这里可以定义SSH的服务端口,默认端口是22,你可以自己定义成其他端口号,如222。然后重启SSH服务:

sudo /etc/init.d/ssh restart

安装完成后即可用SecureCRT登入Linux.

若登入很慢,可以设置如下:

#vim /etc/ssh/sshd_config

将以下两行注释掉

#GSSAPIAuthentication yes
#GSSAPIDelegateCredentials no

 Posted by at 上午 2:18
12月 182013
 

问题: SecureCRT与SecureFX的常规选项里面已经设置成了UTF-8,但是在SecureCRT中新建的中文文件夹,在SecureFX里面仍是乱码

解决:

1.右键点击SecureCRT的连接标签。

2. 在弹出的窗口中,左边栏选择“外观”选项卡,在右边的窗口中选择UTF8

3. 此时,SecureCRT中即可正常显示中文了:

此时虽然可以显示中文,但是在SecureFX中新建的中文文件夹在SecureCRT中仍然会显示乱码,此问题如何解决了?需要通过修改配置文件进行配置,下面将进行具体说明。

配置文件进行设置

1. 找到SecureFX配置文件夹(选项–全局选项,常规下的配置文件夹),比如:C:\Users\ZhangYQ\AppData\Roaming\VanDyke\Config;
2. 在配置文件夹下的Sessions子目录中,找到SecureCRT连接对应的Session文件(.ini扩展名),双击打开;
3. 查找Filenames Always Use UTF8,将=号后面的参数改成00000001,保存退出即可。

 Posted by at 上午 2:17
12月 172013
 

Python Django 在配置完Admin管理界面后,用super admin登录管理界面显示:”You don’t have permission to edit anything”
查文档发现:Above we used admin.autodiscover() to automatically load theINSTALLED_APPS admin.py modules.
很明显Django 用admin.autodiscover()来自动载入INSTALLED_APPS admin.py 模块。
找到urls.py,将 admin.autodiscover()的注释去掉后权限正常了。
NameError: name ‘admin’ is not defined 解决问题的方法:
步骤:

1、修改settings.py。在INSTALLED_APPS设置中添加“django.contrib.admin”。
2、运行python manage.py syncdb更新数据库
3、修改urls.py。改为:
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()
# Uncomment this for admin:
(r’^admin/’, include(‘django.contrib.admin.urls’)),
去掉注释。
在运行时,遇到这种问题:注意空格的问题

安装 Django 1.3

使用命令提示符进入 Django-1.3 目录,输入以下命令来完成

tar xzvf Django-1.5.4.tar.gz
sudo python setup.py install

python setup.py install
安装完成后,打开 Python Shell(IDLE (Python GUI)),Python Shell 交互以“>>>”开始,使用下边的命令来查看 Django 1.3 安装是否成功:
>>> import django
>>> print django.get_version()
1.3
接下来,我们创建一个 Python 项目,我在 E 盘创建一个名为”PythonProject”的项目,使用下边的命令:
django-admin.py startproject PythonProject
如果没有配置环境变量的话,可能会遇到“’django-admin’ 不是内部或外部命令,也不是可运行的程序或批处理文件”这样的错误,django-admin.py文件在 D:\Python\Scripts 目录下(我将 Python 安装在了D:\Python,请注意),添加”D:\Python\Scripts”即可,设置环境变量的方法上边内容已经提到了。
此时我们的 E:\PythonProject 下应该出现4个 .py 的文件了,以后我们会进行相应的配置:
_init__.py: 一个空文件,用来告诉Python这个目录是一个Python包
manage.py: 一个命令行工具,可以让你以多种方式与Django项目交互。
settings.py: 有关Django项目的配置
urls.py: Django项目的URL配置。
接下来,验证下我们的项目是否正常,进到 PythonProject 目录下(怎么进入相信你已经会了),输入下边命令:
python manage.py runserver

在浏览器中输入 127.0.0.1:8000 后,出现了我们第一个基于 Django 框架的 Python 的项目,如下:

 

 Posted by at 上午 9:41
12月 162013
 

安装MySQL

sudo apt-get install mysql-server

这个应该很简单了,而且我觉得大家在安装方面也没什么太大问题,所以也就不多说了,下面我们来讲讲配置。

配置MySQL

注意,在Ubuntu下MySQL缺省是只允许本地访问的,如果你要其他机器也能够访问的话,那么需要改变/etc/mysql/my.cnf配置文件了!下面我们一步步地来:

默认的MySQL安装之后根用户是没有密码的,所以首先用根用户进入:

$mysql -u root

在这里之所以用-u root是因为我现在是一般用户(firehare),如果不加-u root的话,mysql会以为是firehare在登录。注意,我在这里没有进入根用户模式,因为没必要。一般来说,对mysql中的数据库进行操作,根本没必要进入根用户模式,只有在设置时才有这种可能。

进入mysql之后,最要紧的就是要设置Mysql中的root用户密码了,否则,Mysql服务无安全可言了。

mysql> GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY “123456”;

注意,我这儿用的是123456做为root用户的密码,但是该密码是不安全的,请大家最好使用大小写字母与数字混合的密码,且不少于8位。

这样的话,就设置好了MySQL中的root用户密码了,然后就用root用户建立你所需要的数据库。我这里就以xoops为例:

mysql>CREATE DATABASE xoops;

mysql>GRANT ALL PRIVILEGES ON xoops.* TO xoops_root@localhost IDENTIFIED BY “654321”;

这样就建立了一个xoops_roots的用户,它对数据库xoops有着全部权限。以后就用xoops_root来对xoops数据库进行管理,而无需要再用root用户了,而该用户的权限也只被限定在xoops数据库中。

如果你想进行远程访问或控制,那么你要做两件事:

其一:

mysql>GRANT ALL PRIVILEGES ON xoops.* TO xoops_root@”%” IDENTIFIED BY “654321”;

允许xoops_root用户可以从任意机器上登入MySQL。

其二:

$sudo gedit /etc/mysql/my.cnf

老的版本中

>skip-networking => # skip-networking

新的版本中

>bind-address=127.0.0.1 => bind-address= 你机器的IP

这样就可以允许其他机器访问MySQL了。

 Posted by at 下午 1:42
12月 142013
 

sudo apt-get install python-mysqldb

测试

import MySQLdb #注意大小写

MySQLdb在Python中也就相当于JAVA中的MySQL的JDBC Driver,Python也有类似的数据接口规范Python DB API,MySQLdb就是Mysql的实现。操作也比较简单和其它平台或语言操作数据库一样,就是建立和数据库系统的连接,然后给数据库输入SQL,再从数据库获取结果。

先写一个最简单的,创建一个数据库:

#!/usr/bin/env python
#coding=utf-8
###################################
# @author migle
# @date 2010-01-17
##################################
#MySQLdb 示例
#
##################################
import MySQLdb

#建立和数据库系统的连接
conn = MySQLdb.connect(host=’localhost’, user=’root’,passwd=’longforfreedom’)

#获取操作游标
cursor = conn.cursor()
#执行SQL,创建一个数据库.
cursor.execute(“””create database python “””)

#关闭连接,释放资源
cursor.close();

创建数据库,创建表,插入数据,插入多条数据

 

#!/usr/bin/env python
#coding=utf-8
###################################
# @author migle
# @date 2010-01-17
##################################
#MySQLdb 示例
#
##################################
import MySQLdb

#建立和数据库系统的连接
conn = MySQLdb.connect(host=’localhost’, user=’root’,passwd=’longforfreedom’)

#获取操作游标
cursor = conn.cursor()
#执行SQL,创建一个数据库.
cursor.execute(“””create database if not exists python”””)

#选择数据库
conn.select_db(‘python’);
#执行SQL,创建一个数据表.
cursor.execute(“””create table test(id int, info varchar(100)) “””)

value = [1,”inserted ?”];

#插入一条记录
cursor.execute(“insert into test values(%s,%s)”,value);

values=[]
#生成插入参数值
for i in range(20):
values.append((i,’Hello mysqldb, I am recoder ‘ + str(i)))
#插入多条记录

cursor.executemany(“””insert into test values(%s,%s) “””,values);

#关闭连接,释放资源
cursor.close();

查询和插入的流程差不多,只是多了一个得到查询结果的步骤

#!/usr/bin/env python
#coding=utf-8
######################################
#
# @author migle
# @date 2010-01-17
#
######################################
#
# MySQLdb 查询
#
#######################################

import MySQLdb

conn = MySQLdb.connect(host=’localhost’, user=’root’, passwd=’longforfreedom’,db=’python’)

cursor = conn.cursor()

count = cursor.execute(‘select * from test’)

print ‘总共有 %s 条记录’,count

#获取一条记录,每条记录做为一个元组返回
print “只获取一条记录:”
result = cursor.fetchone();
print result
#print ‘ID: %s info: %s’ % (result[0],result[1])
print ‘ID: %s info: %s’ % result

#获取5条记录,注意由于之前执行有了fetchone(),所以游标已经指到第二条记录了,也就是从第二条开始的所有记录
print “只获取5条记录:”
results = cursor.fetchmany(5)
for r in results:
print r

print “获取所有结果:”
#重置游标位置,0,为偏移量,mode=absolute | relative,默认为relative,
cursor.scroll(0,mode=’absolute’)
#获取所有结果
results = cursor.fetchall()
for r in results:
print r
conn.close()

查询后中文会正确显示,但在数据库中却是乱码的。经过我从网上查找,发现用一个属性有可搞定:

在Python代码

conn = MySQLdb.Connect(host=’localhost’, user=’root’, passwd=’root’, db=’python’) 中加一个属性:
改为:
conn = MySQLdb.Connect(host=’localhost’, user=’root’, passwd=’root’, db=’python’,charset=’utf8′)
charset是要跟你数据库的编码一样,如果是数据库是gb2312 ,则写charset=’gb2312’。

 

下面贴一下常用的函数:

然后,这个连接对象也提供了对事务操作的支持,标准的方法
commit() 提交
rollback() 回滚

cursor用来执行命令的方法:
callproc(self, procname, args):用来执行存储过程,接收的参数为存储过程名和参数列表,返回值为受影响的行数
execute(self, query, args):执行单条sql语句,接收的参数为sql语句本身和使用的参数列表,返回值为受影响的行数
executemany(self, query, args):执行单挑sql语句,但是重复执行参数列表里的参数,返回值为受影响的行数
nextset(self):移动到下一个结果集

cursor用来接收返回值的方法:
fetchall(self):接收全部的返回结果行.
fetchmany(self, size=None):接收size条返回结果行.如果size的值大于返回的结果行的数量,则会返回cursor.arraysize条数据.
fetchone(self):返回一条结果行.
scroll(self, value, mode=’relative’):移动指针到某一行.如果mode=’relative’,则表示从当前所在行移动value条,如果 mode=’absolute’,则表示从结果集的第一行移动value条.

 

 

 Posted by at 下午 5:32
12月 132013
 

使用步骤:
1、终端运行crontab -e [解释:编辑配置文件]
2、选择你要用的编辑器,一般人会选择vi。
3、此时配置文件已打开,只需要按照他的格式写配置即可。

#coding:utf-8
print 'hello world by crontab!'
想要这个脚本在每天的早上7点30执行。
因此这个 任务的crontab配置文件就是:
# m h  dom mon dow   command
30 7 * * * python /home/the5fire/testcrontab.py >> /home/the5fire/testcrontab.log 2>&1
这个配置的意思就是在每天的7:30用python运行我的家目录下的testcrontab.py文件,并将输出内容输出到testcrontab.log中,后面那个2>&1的意思是把错误的输出也输出到标准输出(2表示错误,2>表示错误输出,&表示等同于,1表示正确),因此如果运行出错也会把错误输出到之前定义的log中。
上面只是定时几点执行,那么比如每分钟执行依次,对应的配置就是:
# m h  dom mon dow   command
*/1 * * * * python /home/the5fire/testcrontab.py >> /home/the5fire/testcrontab.log 2>&1
想在每天的早上六点到八点之间,每隔3分钟执行一次的配置:
# m h  dom mon dow   command
*/3 6-8 * * * python /home/the5fire/testcrontab.py >> /home/the5fire/testcrontab.log 2>&1
五个星号表示不同的执行单位(分、时、日、月、年),而那个反斜线表示频率。

 Posted by at 下午 2:08
11月 252013
 

script language就像灵活的瑞士军刀,但进行某些专业处理会力不从心。譬如复杂的数学运算、建模、复杂的文本处理会等等。没关系,专业的人做专业的事,同样,专业的工具干专业的活,我们可以借助外部工具帮忙,譬如matlabCC++,vim等等,下面以Matlab为例,简单描述一下如何用shell脚本产生m程序,并用matlab工具来运行它。

  • 程序的产生

菜鸟级:用echo,将每一句话都给echo进目标程序;

骨灰级:here document+重定向;举例如下

cat test.sh

——————————————————–

#!bin/bash

FileName=mat_prog.m

cat > $FileName <<EOF

%This is a matlab script

rn=round(random(‘normal’,256,512,1000000,1));

rn(find(rn<64))=[];

rn(find(rn>1024))=[];

x=unique(rn);

hist(rn,x);

fid=fopen(`myfile.txt`,’w’);

fprintf(fid,’%d\n’,rn);

fclose(fid);

EOF

  • 程序的运行

chmod +x $FileName

matlab -nodesktop -nosplash -nojvm -r “run ./$FileName;quit;”

 Posted by at 上午 12:13
11月 202013
 

Linux下面有很多经典的非常有用的命令,其中处理文本的命令就有很多。这些小工具经过了几十年时间的洗礼,现在已经变成了经典,已经变成了Linux下面的标准,其实它们一直是遵循着Linux的标准。下面就让我们一起看看这些经典的Linux文本处理命令。

一. sort

文件排序,通常用在管道中当过滤器来使用。这个命令可以依据指定的关键字或指定的字符位置,对文件行进行排序。使用-m选项,它将会合并预排序的输入文件。想了解这个命令的全部参数请参考这个命令的info页。

二. tsort

拓扑排序,读取以空格分隔的有序对,并且依靠输入模式进行排序。

三. uniq

这个过滤器将会删除一个已排序文件中的重复行。这个命令经常出现在sort命令的管道后边。

四. expand, unexpand

expand命令将会把每个tab转化为一个空格。这个命令经常用在管道中。

unexpand命令将会把每个空格转化为一个tab。效果与expand命令相反。

五. cut

一个从文件中提取特定域的工具。这个命令与awk中使用的print $N命令很相似,但是更受限。在脚本中使用cut命令会比使用awk命令来得容易一些。最重要的选项就是-d(字段定界符)和-f(域分隔符)选项。

六. paste

将多个文件, 以每个文件一列的形式合并到一个文件中,合并后文件中的每一列就是原来的一个文件。与cut结合使用,经常用于创建系统log文件。

七. join

这个命令与paste命令属于同类命令。但是它能够完成某些特殊的目地。这个强力工具能够以一种特殊的形式来合并两个文件,这种特殊的形式本质上就是一个关联数据库的简单版本。

join命令只能够操作两个文件。它可以将那些具有特定标记域(通常是一个数字标签)的行合并起来,并且将结果输出到stdout。被加入的文件应该事先根据标记域进行排序以便于能够正确的匹配。

八. head

把文件的头部内容打印到stdout上(默认为10行,可以自己修改)。这个命令有一些比较有趣的选项。

九. tail

将一个文件结尾部分的内容输出到stdout中(默认为10行)。通常用来跟踪一个系统logfile的修改情况,如果使用-f选项的话,这个命令将会继续显示添加到文件中的行。

十. wc

wc可以统计文件或I/O流中的”单词数量”。

十一. fold

将输入按照指定宽度进行折行。这里有一个非常有用的选项-s,这个选项可以使用空格进行断行(译者:事实上只有外文才需要使用空格断行,中文是不需要的)(请参考例子 12-23和例子 A-1)。

十二. fmt

一个简单的文件格式器。通常用在管道中,将一个比较长的文本行输出进行”折行”。

十三. col

这个命令用来滤除标准输入的反向换行符号。这个工具还可以将空白用等价的tab来替换。col工具最主要的应用还是从特定的文本处理工具中过滤输出,比如groff和tbl。(译注:主要用来将man页转化为文本。)

十四. column

列格式化工具。通过在合适的位置插入tab,这个过滤工具会将列类型的文本转化为”易于打印”的表格式进行输出。

十五. colrm

列删除过滤器。这个工具将会从文件中删除指定的列(列中的字符串)并且写到文件中,如果指定的列不存在,那么就回到stdout。colrm 2 4 <filename将会删除filename文件中每行的第2到第4列之间的所有字符。

Caution:如果这个文件包含tab和不可打印字符,那将会引起不可预期的行为。在这种情况下,应该通过管道的手段使用expand和unexpand来预处理colrm。

十六. nl

计算行号过滤器。nl filename将会把filename文件的所有内容都输出到stdout上,但是会在每个非空行的前面加上连续的行号。如果没有filename参数,那么就操作stdin。

nl命令的输出与cat -n非常相似,然而,默认情况下nl不会列出空行。

十七. pr

格式化打印过滤器。这个命令会将文件(或stdout)分页,将它们分成合适的小块以便于硬拷贝打印或者在屏幕上浏览。使用这个命令的不同的参数可以完成好多任务,比如对行和列的操作,加入行,设置页边,计算行号,添加页眉,合并文件等等。pr命令集合了许多命令的功能,比如nl, paste, fold, column, 和expand。

pr -o 5 –width=65 fileZZZ | more 这个命令对fileZZZ进行了比较好的分页,并且打印到屏幕上。文件的缩进被设置为5,总宽度设置为65。

一个非常有用的选项-d,强制隔行打印(与sed -G效果相同)。

十八. gettext

GNU gettext包是专门用来将程序的输出翻译或者本地化为不同国家语言的工具集。在最开始的时候仅仅支持C语言,现在已经支持了相当数量的其它程序语言和脚本语言。

想要查看gettext程序如何在shell脚本中使用,请参考info页。

十九. msgfmt

一个产生二进制消息目录的程序。这个命令主要用来本地化。

二十. iconv

一个可以将文件转化为不同编码格式(字符集)的工具。这个命令主要用来本地化。

二十一. recode

可以认为这个命令是上边iconv命令的专业版本。这个非常灵活的并可以把整个文件都转换为不同编码格式的工具并不是Linux标准安装的一部分。

二十二. TeX, gs

TeX和Postscript都是文本标记语言,用来对打印和格式化的视频显示进行预拷贝。

TeX是Donald Knuth精心制作的排版系统。通常情况下,通过编写脚本的手段来把所有的选项和参数封装起来一起传到标记语言中是一件很方便的事情。

Ghostscript (gs) 是一个 遵循GPL的Postscript解释器。

二十三. enscript

将纯文本文件转换为PostScript的工具,

比如, enscript filename.txt -p filename.ps 产生一个 PostScript 输出文件filename.ps。

二十四. groff, tbl, eqn

另一种文本标记和显示格式化语言是groff。这是一个对传统UNIX roff/troff显示和排版包的GNU增强版本,Man页使用的就是groff。

tbl表处理工具可以认为是groff的一部分,它的功能就是将表标记转化到groff命令中。

eqn等式处理工具也是groff的一部分, 它的功能是将等式标记转化到groff命令中。

二十五. lex, yacc

lex是用于模式匹配的词汇分析产生程序,在Linux系统上这个命令已经被flex取代了。

yacc工具基于一系列的语法规范,产生一个语法分析器。在Linux系统上这个命令已经被bison取代了。

二十六. tr

字符转换过滤器。

 Posted by at 下午 3:17
11月 202013
 
Matlab GMT stem
colorbar psscale
contour(X,Y,Z) grdcontour datafile.nc
contourf(X,Y,Z) pscontour -I datafile.xyz
pcolor(X,Y,Z) grdimage data.nc
plot(X,Y,’k’) psxy -Wblack data.xy
quiver(X,Y,U,V) psxy -Sv data.xyAr
plot(X,Y,’rx’) psxy -Wred -Sx.4i data.xy
text(X,Y,’Hello world’) pstext

有些函数Matlab没有对应的函数:

  • pswiggle: to plot anomalies along a track, e.g. altimeter signals along the track, or waterfall plots of temperature and salinity profiles
  • makecpt: to make a colormap
  • ps2raster: convert your *.ps file into another file format (e.g. *.png)
  • pscoast: Plots coastlines with options to shade the land or outline the coasts, and/or add rivers. Probably has an m_map equivalent.

See the full list of GMT functions on the html man pages: http://www.soest.hawaii.edu/gmt5/gmt/html/gmt_man.html.

 Posted by at 下午 2:34