Shawn's Blog

一个伪程序员的伪技术博客

0X00 安装OpenSSH

一般情况下我们的系统中都是自带SSH服务端和客户端的,万一没有的话就需要我们手动安装这个服务。

yum install -y openssh

然后重启OpenSSH服务

systemctl restart sshd

0X01 两行简单的配置

OpenSSH的配置文件在/etc/ssh/目录下,有两个配置文件,一个是针对服务端的一个是针对客户端的,我们只需要修改针对服务端的sshd_config即可。

配置文件里比较重要的两行是PermitRootLoginPasswordAuthentication

  • PermitRootLogin 当这个值为yes时,才允许root用户使用ssh登陆
  • PasswordAuthentication 当这个值为yes时,允许使用密码登陆,反之则拒绝密码登陆(只能使用密钥)。
1
2
PermitRootLogin yes
PasswordAuthentication yes

这里的配置就允许使用root用户登陆,也允许输入密码登陆

阅读全文 »

0X00 hello,world

从一本The C Programming Language开始,我们就开始了几十年的’hello,world’之路。从那以后,机会所有的教程都从输出一句’hello,world’开始,这次也不例外。

1
2
3
#!/bin/bash

echo "hello,world"

这里的第一行是注释,这个注释是很特殊的,他会告诉系统我们使用哪个解释器来运行下面的代码,这里我们用的是/bin/bash,当然Python的代码就要加上#!/usr/bin/python
第二行就是输出一句’hello,world’。echo就是输出语句。

1
2
3
[root@mail shell]# chmod +x test.sh
[root@mail shell]# ./test.sh
hello,world
阅读全文 »

0X00 创建一个类

Python也是一个和C++、Java一样的面向对象编程语言,所以Python里也有类和对象。

1
2
3
4
5
6
7
8
9
class Person:   #这是一个类
def sayHello(self): #这是一个方法
print 'hello,world'

def setName(self, inputName):
self.name = inputName

def getName(self):
return self.getName()

在类中创建的方法使用def关键字定义,每个方法有一个或以上的参数,selft就是实例化的对象自己。需要返回值就return一个,不需要就可以不写return

Python的类和Java的类还是有点区别,Java的类里主要写的是属性和方法,Python里不写属性,因为Java的变量需要定义而Python的变量并不需要定义,最多也就是在前面个各个属性一个变量名并赋初值

0X01 实例化一个对象

类是一个很抽象的概念,可以由类实例化好多个对象出来。Java中我们习惯说成 new一个对象,而Python中并不需要new

1
2
3
4
xiaoming = Person() #实例化了一个类
xiaoming.setName('xiaoming') #调用一个方法
print xiaoming.getName()
xiaoming.sayHello()

此段代码接着上面的类声明

阅读全文 »

0X00 什么是字典

字典,顾名思义就是通过一个条件可以找到相应的值,字典由Key-Value组成。像是下面这样创建一个字典
字典中的数据是没有顺序的,不像列表一样有顺序,在字典中是没有固定顺序的

1
2
3
4
5
6
7
8
9
>>> a = {'name':'xiaoming', 'sex':'F', 'age':22}  #直接创建一个字典
>>> print a
{'age': 22, 'name': 'xiaoming', 'sex': 'F'}
>>> print a['name']
xiaoming

>>> b = dict(name='xiaogang', sex='M', age=23) #通过dict函数创建一个字典
>>> print b['name']
xiaogang

下文说的Key就是键, Value就是值
Key-Value 就是键值对,一个键对应着一个值
Key的值是可以随意改变的,但是Key的类型是固定的不能改变
如果为一个不存在的键赋值,那么会自动添加这个K-V

阅读全文 »

0X00 列表和元组

Python里有个东西叫做序列,可以想象成一堆数据。可以简单的通过序列实现数组、链表、栈和队列等数据结构。
序列有几种,常见的是列表和元组。

0X01 序列分片

我们可以从序列中截取一部分,这种操作被称为分片
分片的时候我们可以选择起始点和结束点,还能选择步长,甚至乃能倒序
分片使用:分隔开参数,一般情况下有两个参数,截取第一个参数到第二个参数,左开右闭
如果参数是负数的话,则表示倒数第几个
但是可以接受第三个参数,第三个参数表示步长。如果第二个参数是2那么就是接一跳一。
如果参数为空则表示极限。 具体可以看下面的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
>>> username = 'hello,world'
>>> print username[4:8] #截取从4到8,左开右闭
o,wo
>>> print username[4:-2] #截取4到倒数第4的参数,如果想要包括最后一个是不能用-1的,要用下面的方式
o,wor
>>> print username[2:] #截取包括最后一个的话不能用-1,因为-1是最后一个,然后区间是左开右闭,所有右边留空就表示极限了
llo,world
>>> print username[:] #两头取极限,就是完整的序列
hello,world
>>> print username[1:8:2] #演示步长,此处步长为2
el,o
>>> print username[8:0:-1] #当步长为-1的时候,就是从后向前的
row,olle
阅读全文 »
0%